Bonjour tout le monde, j'ai développé un Mastermind et j'ai voulu le rendre le plus complet que possible.
[Fonctionnement de base]
Au départ l'ordinateur sélectionne 4 couleurs (sur 8) dans un ordre précis ET toute différente.
Le joueur lui aussi, sélectionne 4 couleurs (sur 8) dans un ordre précis ET toute différente.
[boucle : tant que le joueurs n'as pas toute les couleurs juste et au bonne endroit]
Si le joueurs a sélectionné nb couleur qui sont au bonne endroit et de la bonne couleur alors on affiche par exemple : 2 couleur juste
Si le joueurs a sélectionné nb couleur qui sont de la bonne couleur mais pas au bonne endroit alors on affiche par exemple : 1 couleur au mauvaise en droit
[boucle]
Exemple :
L'ordinateur sélectionne : vert rouge jaune bleu
Le joueur sélectionne : vert jaune blanc jaune
sortie -> 1 couleur juste | 1 couleur au mauvaise en droit
Donc dans cette exemple les test sont simple à faire mais je souhaite que l'ordinateur (et donc le joueur aussi) puisse utilisé plusieurs fois la même couleur et c'est là que cela pose problème.
Admettons cette exemple :
L'ordinateur sélectionne : rouge jaune jaune jaune
Le joueur sélectionne : jaune jaune blanc blanc
sortie -> 1 couleur juste | 1 couleur au mauvaise en droit
Dans cette exemple on doit vérifier les doublons des couleurs au mauvais endroit du joueur mais aussi celle de l'ordinateur pour définir combien de couleur sont au mauvaise endroit... La phrase est compliqué donc la conception est ambigüe de mon côté :/
Voici la méthode pour compter les couleur juste et au bonne endroit
J'utilise le principe ECS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static int rightPin( Vector<Entitie> pins, ArrayList<Integer> pinToCheck, Vector<PinColor> cwp ) { int rp = 0; for( int i = 0; i < cwp.size(); i++ ) { if( ((Pin)pins.elementAt(Tools.getIndex(pins, pinToCheck.get(i)))).pinColor().equals(cwp.elementAt(i)) ) rp++; } return rp; }
- pin est une classe qui contient la couleur du joueur et qui hérite d'Entitie
- pins est mon component
- pinToCheck les id des pin du joueur à comparé
- cwp les couleurs juste
Pour ce qui en est de ce code, pas de problèmes il fonctionne étant donné qu'on test la position et la couleur d'un pin en même temps pour compter le nombre de pin juste
Mais pour compter le nombre de couleur juste sachant qu'il ne faut pas compté les pin à la bonne position et la bonne couleur mais seulement compté le nombre de couleurs justes au mauvais endroit, je sèche (depuis 2h).
Je me retrouve avec une fonction que je ne sais pas "remplir"
Si quelqu'un peux m'expliquer ( pas forcément en java étant donné que je n'est pas décrite mes classes ) comment faire je lui serais très reconnaissant !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static int rightPinColor( Vector<Entitie> pins, ArrayList<Integer> pinToCheck, Vector<PinColor> cwp ) { int rpc = 0; Vector<PinColor> pc = extract(pinsById(pins, pinToCheck)); //pc : couleurs du joueur (4) //cwp : couleurs de l'ordi (4) //rpc : le nombre de couleurs du joueurs qui sont seulement mal placé return rpc; }
Un screenshot du jeu :
Partager