diff --git a/app/src/main/java/com/example/mastermind/game/GameView.java b/app/src/main/java/com/example/mastermind/game/GameView.java index ea789fa..c4ef1b8 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -27,7 +27,7 @@ public class GameView extends View { this.setOnTouchListener(new TouchListener(this)); //on initialise les collections de pions initpions(); - //state indique si le joueur soumet une combinaison ou false si elle est noté + //state indique true si le joueur soumet une combinaison ou false si elle est noté this.state=true; this.circle = new Paint(); } @@ -37,6 +37,7 @@ public class GameView extends View { super.onDraw(canvas); this.setBackgroundColor(this.getResources().getColor(R.color.grey)); //affichage des anciennes soumissions + //copie des soumissions LinkedList grille = new LinkedList(); grille.addAll(this.grille.getSoumissions()); System.out.println(grille.size()); @@ -48,6 +49,7 @@ public class GameView extends View { } } // affichage de la zone de saisie + //copie de la zone de saisie LinkedList saisie = new LinkedList(); saisie.addAll(this.saisie.getSelection()); for (int i=0;i couleurs = new LinkedList(); couleurs.addAll(this.saisie.getChoix()); System.out.println(couleurs.size()); @@ -65,13 +68,17 @@ public class GameView extends View { //TODO: coordonnées propres (encore) canvas.drawCircle((i*this.getWidth()*2/13+this.getWidth()/8),this.getWidth()*689/420, this.getWidth()/15, this.circle); } - //Test pour valider + //TODO: ajout des colonnes de notation + //TODO: ajout des boutons + //Test de bouton valider this.circle.setColor(this.getResources().getColor(R.color.green)); canvas.drawCircle((this.getWidth()/2),this.getHeight()-this.getWidth()/9, this.getWidth()/10, this.circle); } + //Change l'état de soumission à notation après qu'une combinaision ai été soumise puis inversement public void changeState() { if (this.saisie.getSizeSelection() == 4) { + //partie à décommenter pour acceder à la notation /*this.state = !this.state; if (this.state) { this.saisie.setChoix(this.pionsAttaquant); @@ -84,23 +91,26 @@ public class GameView extends View { } } - //Soumet une nouvelle couleur pour la séléction à soumettre + //ajoute une nouvelle couleur pour la séléction à soumettre public void addChoix(int choix){ this.saisie.addSelection(choix); this.invalidate(); } - //initialise les collections de pions + //initialise les collections de pions et remplie saisie et grille de pions vides public void initpions(){ //on initialise les pions + //on créer une ligne de 4 pions gris représentants une ligne de pions vides this.pionsPasPlaces = new LinkedList(); for (int i=0;i<4;i++){ this.pionsPasPlaces.add(this.getResources().getColor(R.color.pionVide)); } + //Le défenseur a des pions noirs et blancs this.pionsDefenseur = new LinkedList(); this.pionsDefenseur.add(this.getResources().getColor(R.color.white)); this.pionsDefenseur.add(this.getResources().getColor(R.color.black)); + //L'attaquant a des pions de couleurs this.pionsAttaquant = new LinkedList(); this.pionsAttaquant.add(this.getResources().getColor(R.color.pink)); this.pionsAttaquant.add(this.getResources().getColor(R.color.purple)); diff --git a/app/src/main/java/com/example/mastermind/game/Grille.java b/app/src/main/java/com/example/mastermind/game/Grille.java index 5228e2b..a40dfed 100644 --- a/app/src/main/java/com/example/mastermind/game/Grille.java +++ b/app/src/main/java/com/example/mastermind/game/Grille.java @@ -10,36 +10,54 @@ import java.util.LinkedList; représente la grille de jeu à savoir la liste des soumissions ainsi que leur notation */ public class Grille { + //sizeSubs indique le nombre de soumissions dans la grille. Il permet de limiter ce nombre à 10 private int sizeSubs; + // soumission représente la liste des soumissions réalisées ainsi que des cases grises pour compléter la grille private LinkedList soumissions; + // notations est la liste des notes attribuées aux soumissions private LinkedList notations; public Grille(){ this.soumissions=new LinkedList(); this.notations=new LinkedList(); - this.sizeSubs=0; } + // Méthode permettant d'ajouter une soumission public void addSoumission(LinkedList newSub){ + //le nombre de soumissions ne doit pas dépasser 10 if (this.sizeSubs<10) { - for (int i = 4; i > 0; i--) { + for (int i=0; i<4; i++) { + //On retire une ligne vide en haut pour remonter l'affichage this.soumissions.remove(0); + //On ajoute ensuite une deriere ligne qui correspond à la nouvelle soumission this.soumissions.addLast(newSub.poll()); } this.sizeSubs += 1; } } + // Méthode qui permet d'initialiser la grille vide public void initGrille(Collection SubToCopy){ + //On réécupère une ligne de la couleur qui correspond à l'absence de pion et on remplit la grille avec (soumissions et notations for(int i=0;i<10;i++){ this.soumissions.addAll(SubToCopy); + this.notations.addAll(SubToCopy); + } + // Au début il n'y a pas de soumission + this.sizeSubs=0; + } + + // Méthode qui permet d'ajouter des notations comme pour les soumissions + public void addNotation(LinkedList newNot){ + for (int i=0; i<4; i++) { + //On retire une ligne vide en haut pour remonter l'affichage + this.notations.remove(0); + //On ajoute ensuite une deriere ligne qui correspond à la nouvelle soumission + this.notations.addLast(newNot.poll()); } } - public void addNotation(Collection newNot){ - this.notations.addAll(newNot); - } - + //getters des soumissions et notations public Collection getSoumissions(){ return this.soumissions; } diff --git a/app/src/main/java/com/example/mastermind/game/Saisie.java b/app/src/main/java/com/example/mastermind/game/Saisie.java index defe853..3bf845c 100644 --- a/app/src/main/java/com/example/mastermind/game/Saisie.java +++ b/app/src/main/java/com/example/mastermind/game/Saisie.java @@ -13,8 +13,12 @@ import java.util.LinkedList; */ public class Saisie { + //sizeSelection est le nombre de pions dans la zone actuelle de saisie. + // Cela permet de limiter ce nombre à 4 et vérfier qu'il y en a 4 avant de soumettre private int sizeSelection; + //choix est la liste des couleurs que l'on peut choisir (N&B pour la notation et couleuts pour les soumissions) private LinkedList choix; + //selection est la liste des pions choisis pour une soumission ou une notation private LinkedList selection; public Saisie(){ this.choix=new LinkedList(); @@ -23,15 +27,19 @@ public class Saisie { // getters et setters + //récupère la couleur d'un pion vide pour remplir la zone de saisie avec public void initSelection(Integer chosenColors){ this.selection.removeAll(this.selection); for (int i=0;i<4;i++){ this.selection.add(chosenColors); } + //au début la zone de séléction est vide this.sizeSelection=0; } + //addSelection permet d'ajouter un pion à la zone de saisie public void addSelection(Integer chosenColors){ + //On vérifie qu'il n'y a pas déjà 4 pions if (this.sizeSelection<4){ this.selection.set(this.sizeSelection,this.choix.get(chosenColors)); this.sizeSelection+=1; @@ -47,6 +55,7 @@ public class Saisie { return this.choix; } + //Méthode qui permet depuis GameView de changer la liste des choix de couleur en fonction de l'état de la partie public void setChoix(Collection colorsSelected){ this.choix.removeAll(this.choix); this.choix.addAll(colorsSelected); diff --git a/app/src/main/java/com/example/mastermind/game/TouchListener.java b/app/src/main/java/com/example/mastermind/game/TouchListener.java index f90e813..d4f1ac7 100644 --- a/app/src/main/java/com/example/mastermind/game/TouchListener.java +++ b/app/src/main/java/com/example/mastermind/game/TouchListener.java @@ -16,6 +16,7 @@ public class TouchListener implements View.OnTouchListener{ if (action==MotionEvent.ACTION_UP) { + //Surveille quel bouton de couleur est choisi if (v.getWidth()*689/420-v.getWidth()/15