Bonjour,
J'ai besoin de quelqu'un qui en sait plus que moi pour m'aider à débloquer la situation.
Je met le minimum de code pour être concis, ça devrait être, je l'espere, suffisant.
Soit un jeux de bataille : 32 cartes.
Dans la classe carte
le constructeur :
1 2 3 4 5 6
| Carte(String nom, int valeur, String couleur)
{
this.nom = nom;
this.couleur = couleur;
this.valeur = valeur;
} |
une methode String toString()
1 2 3 4 5
| public String toString()
{
StringBuffer res = new StringBuffer();
return res.append(valeur).toString();
} |
Dans une autre classe JeuDeBataille je crée une liste de cartes qui sera ensuite partagée entre deux joueurs en LinkedList
1 2 3 4 5 6 7
| for (int i=0; i<tab1.length;i++)
{
paquetCarte.add(new Carte("Pique", tab1[i], "Noir"));
paquetCarte.add(new Carte("Coeur", tab2[i], "Rouge"));
paquetCarte.add(new Carte("Carreau", tab3[i], "Rouge"));
paquetCarte.add(new Carte("Trefle", tab4[i], "Noir"));
} |
Les valeurs qui vont m'intérésser sont les tab[i]
La première moitié du paquet donc de la LinkedList paquetCarte va dans des LinkedList Cartejoueur1 et la seconde moitié dans Cartejoueur2.
je crée deux itérateurs sur Cartejoueur1 et Cartejoueur2 :
1 2
| Iterator iterateur1 = Cartejoueur1.iterator();
Iterator iterateur2 = Cartejoueur2.iterator(); |
le but est de comparer iterateur1.next() et iterateur2.next() lequel à la carte de plus grande valeur.
Je n'arrive à ce moment qu'a utiliser un
if(iterateur1.next().equals(iterateur2.next()))
qui m'indique l'égalité (normal pour un equals) mais non la supérioté, ce que je cherche à avoir.
Une méthode compareTo m'affiche dans mon ids
La méthode compareTo(Object) du type Comparable ne s'applique pas aux arguments (Object,
Object)
Je vois bien que je compare un objet et que ça ne marche donc pas, comment alors transformé iterateur1.next() en type intéger afin de tenter la comparaison entre les valeurs (de l'objet carte : tab[i]) des cartes de chaque tas ?
Quel serait la bonne méthode ?
Partager