jamal1984
Messages postés5Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention16 avril 2009
-
13 avril 2009 à 01:14
jamal1984
Messages postés5Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention16 avril 2009
-
16 avril 2009 à 01:41
Bonjour tous le monde,
Bon ma question concerne sur un test d'égalité de trois ball adjacents de même couleur,
j'ai crée une chaine de ball dans la quelle la classe ball est agrégée dans la chaine est le but c'est que lorsque je rassemble trois ball de même couleurs, il faut qu'ils disparaissent de la chaine ce qui me coincent vraiment,
j'ai pensé de faire le test d'égalité avec equal mai je sai pas jouer sur le corps des instructions..
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 13 avril 2009 à 09:07
Nous pouvons implémenter les méthodes "equals" et "hashCode" dans la classe Ball. L'exemple suivant n'utilise que le champ "color", donc deux balles sont égaux, si elles ont la même couleur. Evidemment, tu peus aussi inclure d'autres champs:
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Ball other = (Ball) obj; if (this.color !other.color && (this.color null || !this.color.equals(other.color))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 5;
hash = 37 * hash + (this.color != null ? this.color.hashCode() : 0);
return hash;
}
jamal1984
Messages postés5Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention16 avril 2009 16 avril 2009 à 01:41
Bonjour,
je vous explique ma situation;
en faite j'ai crée une chaine de balls sous cette forme:
balls = new ArrayList();
balls.add(new Ball(ballPath, 3,new Color(0,0,255)));
balls.add(new Ballspecial1(ballPath,4,Color.white));
balls.add(new Ball(ballPath, 4,new Color(0,255,255)));
balls.add(new Ball(ballPath, 5,new Color(64,64,64)));
balls.add(new Ball(ballPath, 6,new Color(128,128,128)));
balls.add(new Ball(ballPath, 7,new Color(0,255,0)));
balls.add(new Ball(ballPath, 8,new Color(0,255,30)));
balls.add(new Ballspecial3(ballPath,27,Color.yellow));
le probleme c'est que lorsque je clique sur la chaine, je m'ajoute une balle en position clickée et lorsque je rassemble trois de meme couleur elles disparaissent de la chaine, donc comment je dois modifier la méthode equal() proposée ci dessus pour tester l'egalite au niveau de l'attribut couleur.
jamal1984
Messages postés5Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention16 avril 2009 13 avril 2009 à 17:39
Bonjour,
je vous remercie bcp de votre aide,
mai j'ai encore un petit souci, comment je doi assurer que les balls sont adjacents sur une ArrayList.
Merci en avance
jamal1984
Messages postés5Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention16 avril 2009 15 avril 2009 à 14:21
Alors, ce que j'ai compris c'est que je vais écrire un code comme si dessous:
final Ball other1 = (Ball) obj;
final Ball other2 = (Ball) obj; if (this.color !other1.color && (this.color null || !this.color.equals(other1.color)) & this.color !other2.color && (this.color null || !this.color.equals(other2.color)) ) {
return false;
}
return true;
}