1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
public class MPanel extends JPanel {
//Attributs
public BufferedImage ifond, iwin, ilose, i1, i2, i3, igo;//Certaines images propres au panel, a part le fond elle ne sont affichees qu'en debut et fin de partie
private Dimension screen;//la dimention du panel
private MJeu jeu;//Le gestionnaire du jeu ou on va chercher pas mal de donnee
private int dx, dy;//La moitiee en x et y de l'image du vaisseau
private int fx, fy;//Le nombre de repetition en x et y de l'image de fond
private fdx, fdy;//La taille de l'image de fond en x et y
//Constructeur
public MPanel (MJeu jeu, Dimension screen) {
try {
ifond = ImageIO.read(new File(GConstantes.I_FOND));
iwin = ImageIO.read(new File(GConstantes.I_WIN));
ilose = ImageIO.read(new File(GConstantes.I_LOSE));
igo = ImageIO.read(new File(GConstantes.I_GO));
i1 = ImageIO.read(new File(GConstantes.I_1));
i2 = ImageIO.read(new File(GConstantes.I_2));
i3 = ImageIO.read(new File(GConstantes.I_3));
} catch (IOException e) {}
this.jeu = jeu;
jeu.setPanelSize(screen);
this.setInvisibleCursor();
this.screen=screen;
this.setSize(screen);
this.setPreferredSize(screen);
this.dx=(int)this.jeu.getJoueur().getImageVaisseau().getWidth(null)/2;
this.dy=(int)this.jeu.getJoueur().getImageVaisseau().getHeight(null)/2;
this.fdx = this.ifond.getWidth();
this.fdy = this.ifond.getHeight();
this.fx=(int)this.screen.getWidth()/fdx+2;
this.fy=(int)this.screen.getHeight()/fdy+2;
}
//PaintComponent
public void paintComponent (Graphics g) {
super.paintComponent(g);
//Dessin du fond
this.drawBackground(g);
//Dessin du vaisseau
g2d.drawImage(this.jeu.getJoueur().getImageVaisseau(), (int)this.jeu.getJoueurPos().getX(), (int)this.jeu.getJoueurPos().getY(), null);
//Dessin des hostiles
this.drawHostiles(g);
//Dessin des tirs
this.drawTirs(g);
//Dessin des explosions
this.drawExplosion(g);
//Dessin du bouclier
if (this.jeu.shieldOn()){
g2d.drawImage(this.jeu.getJoueur().getImageBouclier(), (int)this.jeu.getJoueurPos().getX(), (int)this.jeu.getJoueurPos().getY(), null);
}
}
//Methodes Privées
private void drawExplosion(Graphics g) {
MExplode e;
for (int i = 0; i < this.jeu.getExplosions().size(); i++) { //On dessine toutes les explosions
e = (MExplode) this.jeu.getExplosions().get(i); //Recuperation de l'explosion
g.drawImage(e.getImage(), (int)e.getPoint().getX(), (int)e.getPoint().getY(), null); //Dessin de l'explosion
}
}
private void drawTirs(Graphics g) {
MTir t;
for (int i = 0; i < this.jeu.getTirs().size(); i++) {
t = (MTir) this.jeu.getTirs().get(i);
g.drawImage(t.getImage(), (int)t.getPoint().getX(), (int)t.getPoint().getY(), null);
}
}
private void drawHostiles(Graphics g) {
if (jeu.getDecompte() < 0) {
MHostile m;
for (int i = 0; i < this.jeu.getHostiles().size(); i++) {
m = (MHostile) this.jeu.getHostiles().get(i);
g.drawImage(m.getImage(), (int)m.getPoint().getX(), (int)m.getPoint().getY(), null);
}
}
}
private void drawBackground(Graphics g) {
for (int i = 0; i<this.fx; i++) {//Dessin dans la hauteur
for (int j = 0; j<this.fy; j++) {//Dessin dans la largeur
//Dessin de l'image de fond avec un decalage en x de dxf%largeur de l'image pour creer l'illusion de mouvement
g.drawImage(ifond, j*fdx-this.jeu.getDfx(), i*fdy, null);
}
}
}
} |