package personnages; import java.awt.Color; import animationPersonnages.IHMJeuBalles; /** Cette classe sert a definir une balle qui tue tout personnage * qu'elle "heurte", du moment que ce personnage, instance de la * classe Personnage, fait partie des "promeneurs" */ public class BalleAttaque extends Balle { private boolean aTouche; private IHMJeuBalles jeu; private boolean aPasse; /** Constructeur de la classe. * @param jeu panneau de l'action. * @param x abscisse d'un point central de la balle. * @param y ordonnée d'un point central de la balle, comptee à partir du haut de la fenetre * @param taille hauteur de la balle. en pourcentage de la hauteur du composant. Cette taille est limitée à 100. * @param couleur couleur de la balle.*/ public BalleAttaque(IHMJeuBalles jeu, int x, int y, int taille, Color couleur) { super(jeu.getDessin() ,x, y, taille, couleur, false); this.jeu = jeu; } /** si la balle rencontre un personnage, celui-ci est supprime, * le jeu est notifie */ public void attaque() { Personnage promeneur = jeu.getPromeneur(); if (!aPasse && touche(promeneur)) { aTouche = true; promeneur.supprimer(); jeu.setPromeneur(null); jeu.getLanceBalles().retirer(this); jeu.getLanceBalles().setPromeneurTouche(true); synchronized(jeu) { jeu.notify(); } } else if (!aPasse && evite(promeneur)){ jeu.getLanceBalles().setCompteur(jeu.getLanceBalles().getCompteur() + 1); aPasse = true; } } public boolean getATouche() { return aTouche; } public void setATouche(boolean aTouche) { this.aTouche = aTouche; } /* fait se délacer la balle en tuant les personnages rencontrés */ public void run() { while(!estStoppe()) { attaque(); fairePas(); dormir(); } jeu.getLanceBalles().retirer(this); jeu.getDessin().repaint(); } }