|
Définition de la classe Carte. | Carte.java |
|
Représentons maintenant les Combinaison
s de Cartes ... |
Paire.java
Brelan.java Poker.java CinqCartes.java Quinte.java Flush.java QuinteFlush.java DeuxPaires.java Full.java |
|
Il ne nous reste maintenant plus qu'à représenter
une Main ! |
Main.java
Application.java |
Exercice 1 :
class Carte { static final int PIQUE=0, TREFLE=1, CARREAU=2, COEUR=3; static final int AS=12, ROI=11, DAME=10, VALET=9, DIX=8, NEUF=7, HUIT=6, SEPT=5, SIX=4, CINQ=3, QUATRE=2, TROIS=1, DEUX=0; protected int couleur, valeur; // couleur valeur protected boolean marque = false; // marque ... } |
class Paire { // carte + carte (de meme valeur) Carte c1, c2; ... } |
class CinqCartes {
// classe de base pour Quinte et Flush Carte c1, c2, c3, c4, c5; ... } |
La main d'un joueur, c'est à dire les cartes qu'il peut jouer,
est réalisée par une classe Main. La main
mémorise cinq cartes, voici le squelette de cette classe :
class Main { Carte c1,c2,c3,c4,c5; ... public void trier() { // tri par la methode des bulles Carte c; if (c1.estInferieureA(c2)) { c=c1; c1=c2; c2=c; } // 1 if (c2.estInferieureA(c3)) { c=c2; c2=c3; c3=c; } if (c3.estInferieureA(c4)) { c=c3; c3=c4; c4=c; } if (c4.estInferieureA(c5)) { c=c4; c4=c5; c5=c; } if (c1.estInferieureA(c2)) { c=c1; c1=c2; c2=c; } // 2 if (c2.estInferieureA(c3)) { c=c2; c2=c3; c3=c; } if (c3.estInferieureA(c4)) { c=c3; c3=c4; c4=c; } if (c1.estInferieureA(c2)) { c=c1; c1=c2; c2=c; } // 3 if (c2.estInferieureA(c3)) { c=c2; c2=c3; c3=c; } if (c1.estInferieureA(c2)) { c=c1; c1=c2; c2=c; } // 4 } } |
Pour faciliter l'écriture des méthodes sur la main, les
cartes seront mémorisées dans l'ordre décroissant.
La méthode trier() trie les cartes dans cet ordre.
Compléter la classe Main avec:
Les constructeurs trieront les cartes, en utilisant la méthode
trier().
Il s'agit maintenant d'extraire d'une main les combinaisons qui s'y trouvent.
Pour cela il faut quelques méthodes ; ajouter à la classe
Main :
Extraire les brelans et les paires c'est plus difficile, car il peut
y avoir un brelan et une paire ou deux paires ; de plus dans un brelan on
peut trouver deux paires. Il va donc falloir "marquer" les cartes utilisées
pour un brelan ou une paire pour ne pas les réutiliser dans une autre
paire.
Les deux méthodes qui suivent recherchent si la main courante contient
les cartes nécessaires pour un brelan ou une paire et dans ce cas
retournent une instance de la classe Brelan ou de la clase Paire contenant
les bonnes cartes.
Ajouter à la classe Main :
Il ne reste plus qu'a extraire la plus forte combinaison de la main. Il
faut donc les tester l'une après l'autre dans l'ordre : quinte flush,
poker, full, flush, quinte, brelan, deux paires, paire ou carte.
Ajouter à la classe Main :
* une méthode extraire(), à résultat
Object, recherchant dans la main courante la plus forte
combinaison et retournant une instance de cette combinaison (contenant les
bonnes cartes). Pour le cas une carte on retournera la plus forte carte.
NB: Le polymorphisme d'affectation est utilisé
pour cette méthode.
public class Application
{ static final int PIQUE=0, TREFLE=1, CARREAU=2, COEUR=3; static final int AS=12, ROI=11, DAME=10, VALET=9, DIX=8, NEUF=7, HUIT=6 SEPT=5,SIX=4, CINQ=3, QUATRE=2, TROIS=1, DEUX=0; public static void main(String args[]) { System.out.println(); Main m0=new Main(new Carte[] { new Carte(AS,PIQUE),new Carte(AS,COEUR),new Carte(AS,TREFLE), new Carte(VALET,PIQUE),new Carte(VALET,COEUR)}); System.out.println(m0); System.out.println(m0.extraire()); Main m1=new Main(new Carte[] { new Carte(AS,PIQUE),new Carte(ROI,PIQUE),new Carte(DAME,PIQUE), new Carte(VALET,PIQUE),new Carte(DIX,PIQUE)}); System.out.println(m1); System.out.println(m1.extraire()); Main m2=new Main(new Carte[] { new Carte(AS,PIQUE),new Carte(CINQ,PIQUE),new Carte(QUATRE,PIQUE), new Carte(TROIS,PIQUE),new Carte(DEUX,PIQUE)}); System.out.println(m2); System.out.println(m2.extraire()); } } |
C:\java\coo\td6\>
java Application Main (as de pique,as de coeur,as de trefle,valet de pique,valet de coeur) Full (Brelan (as de pique,as de coeur,as de trefle),Paire (valet de pique,valet de coeur)) Main (as de pique,roi de pique,dame de pique,valet de pique,10 de pique) Quinte flush (as de pique,roi de pique,dame de pique,valet de pique,10 de pique) Main (as de pique,5 de pique,4 de pique,3 de pique,2 de pique) Quinte flush (5 de pique,4 de pique,3 de pique,2 de pique,as de pique) |