codice:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import javax.swing.Timer;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
public class Main extends JPanel implements KeyListener{
static JFrame f,f1,f2;
static JPanel p1;
static Main p;
static Image imgProiettile,imgSfondo,imgPacman,imgFantasminoRosso,imgFantasminoViola,imgFantasminoVerde,imgFantasminoArancione;
static int direzioniRandom,xProiettile,yProiettile,oldDirezioni,direzioni,tastoPremuto,xPacman=17,yPacman=19,x,y,xOldPacman,yOldPacman,xFantasminoRosso=340,yFantasminoRosso=250,xOldFantasminoRosso,yOldFantasminoRosso,distanzaPacmanFantasminoRosso,differenzaCoordinataxRosso,differenzaCoordinatayRosso,xFantasminoVerde=340,yFantasminoVerde=250,xOldFantasminoVerde,yOldFantasminoVerde,distanzaPacmanFantasminoVerde,differenzaCoordinataxVerde,differenzaCoordinatayVerde,xFantasminoViola=340,yFantasminoViola=250,xOldFantasminoViola,yOldFantasminoViola,distanzaPacmanFantasminoViola,differenzaCoordinataxViola,differenzaCoordinatayViola,xFantasminoArancione=340,yFantasminoArancione=250,xOldFantasminoArancione,yOldFantasminoArancione,distanzaPacmanFantasminoArancione,differenzaCoordinataxArancione,differenzaCoordinatayArancione;
static Shape Proiettile,Pacman,Pallini,FantasminoRosso,FantasminoVerde,FantasminoViola,FantasminoArancione;
static ArrayList <Shape> muri,Palle,Mostri,proiettili ;
static Pacman pac;
static boolean muroCostruito=false,pallaAggiunta=false,finestraPrincipale=true,finestraGioco=false,intersecato=false;
static Graphics2D g1;
static Fantasmino fant;
static Fantasmino2 fant2;
static Fantasmino3 fant3;
static Fantasmino4 fant4;
public static void main(String[] args) {
Mostri = new ArrayList<Shape>();
muri = new ArrayList<Shape>();
Palle = new ArrayList<Shape>();
proiettili = new ArrayList<Shape>();
JFrame f = new JFrame();
p = new Main();
Dimension screenD = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(476,428);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocation( (screenD.width-486) /2 ,(screenD.height- 438)/2 );
p.setBackground(Color.BLUE);
imgFantasminoRosso =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\Gifs\\Rosso2.gif");
imgProiettile =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\Gifs\\Proiettile.gif");
imgFantasminoViola =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\Gifs\\viola2.gif");
imgFantasminoVerde =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\Gifs\\verde2.gif");
imgFantasminoArancione =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\Gifs\\arancione2.gif");
imgPacman =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\gifs\\rambo2DX.gif");
p.addKeyListener(p);
p.setFocusable(true);
f.setResizable(false);
f.add(p);
f.setVisible(true);
pac = new Pacman();
fant = new Fantasmino();
fant2 = new Fantasmino2();
fant3 = new Fantasmino3();
fant4 = new Fantasmino4();
pac.start();
fant.start();
}
public void paint (Graphics g){
g1 = (Graphics2D)g ;
super.paint(g1);
g1.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g1.drawImage(imgPacman, xPacman,yPacman, 35,35, this);
g1.drawImage(imgFantasminoRosso, xFantasminoRosso,yFantasminoRosso, 30,30, this);
Pacman = new Rectangle2D.Double(xPacman,yPacman,30,30);
FantasminoRosso = new Rectangle2D.Double(xFantasminoRosso,yFantasminoRosso,30,30);
aggiungiMuro(0,80,40,20);
aggiungiMuro(0,100,20,60);
aggiungiMuro(0,240,20,80);
aggiungiMuro(20,300,20,20);
aggiungiMuro(100,320,50,80);
aggiungiMuro(100,220, 50,20);
aggiungiMuro(100,160, 50,20);
aggiungiMuro(100,0, 50,80);
aggiungiMuro(200,60, 90,20);
aggiungiMuro(200,220, 90,20);
aggiungiMuro(200,160, 20,60);
aggiungiMuro(270,160,20,60);
aggiungiMuro(260,160, 10,20);
aggiungiMuro(220,160, 10,20);
aggiungiMuro(200,320,90,20);
aggiungiMuro(340,0, 50,80);
aggiungiMuro(340,160, 50,20);
aggiungiMuro(340,220, 50,20);
aggiungiMuro(340,320, 50,80);
aggiungiMuro(430,300, 20,20);
aggiungiMuro(450,240,20,80);
aggiungiMuro(430,80, 20,20);
aggiungiMuro(450,80, 20,80);
aggiungiMuro(0,0,480,3);
aggiungiMuro(0,0,3,80);
aggiungiMuro(0,320,3,100);
aggiungiMuro(0,397,470,3);
aggiungiMuro(467,0,3,80);
aggiungiMuro(467,320,3,100);
muroCostruito = true ;
for (int i=0;i<muri.size();i++){
g1.fill(muri.get(i));
}
aggiungiPalla(60,30,10);
aggiungiPalla(90,30,10);
aggiungiPalla(120,30,10);
aggiungiPalla(60,60,10);
aggiungiPalla(90,60,10);
aggiungiPalla(120,60,10);
aggiungiPalla(90,100,10);
aggiungiPalla(120,100,10);
aggiungiPalla(20,100,10);
aggiungiPalla(20,120,10);
aggiungiPalla(20,140,10);
aggiungiPalla(20,160,10);
aggiungiPalla(20,180,10);
pallaAggiunta = true;
for (int i=0;i<Palle.size();i++)
g1.fill(Palle.get(i));
}
public static void aggiungiMuro(int xMuro,int yMuro,int lunghezza,int larghezza){
Rectangle2D muro = new Rectangle2D.Double(xMuro, yMuro, lunghezza, larghezza);
g1.setColor(Color.BLACK);
if(!muroCostruito){
muri.add(muro);
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()== KeyEvent.VK_LEFT){
imgPacman =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\gifs\\rambo2SX.gif");
tastoPremuto= 1;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
imgPacman =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\gifs\\rambo2DX.gif");
tastoPremuto = 2;
}
if(e.getKeyCode()==KeyEvent.VK_DOWN){
imgPacman =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\gifs\\rambo2DW.gif");
tastoPremuto = 3;
}
if(e.getKeyCode()==KeyEvent.VK_UP){
imgPacman =Toolkit.getDefaultToolkit().createImage("D:\\Università\\Java\\eclipse\\Pacman\\gifs\\rambo2UP.gif");
tastoPremuto = 4;
}
if(e.getKeyCode()==KeyEvent.VK_SPACE){
proiettili.add(Proiettile);
switch (Main.tastoPremuto)
{
case 1 :
xProiettile --;
break ;
case 2 :
xProiettile++;
break ;
case 3 :
yProiettile++;
break;
case 4 :
yProiettile--;
break;
}
}
}
public static void aggiungiPalla(int xPalla,int yPalla , int raggio){
Ellipse2D Pallini = new Ellipse2D.Double(xPalla,yPalla,raggio,raggio);
g1.setColor(Color.yellow);
if(!pallaAggiunta){
Palle.add(Pallini);
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}