From 1e0f8e845a9ac2878fdeb7a0d1daf9a65cef49e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayyissa=20HA=C3=8FSSOUS?= Date: Wed, 5 Apr 2023 13:44:34 +0200 Subject: [PATCH 1/4] retour en arriere et ronds responsifs --- .../com/example/mastermind/game/GameView.java | 39 +++++++++++++------ .../com/example/mastermind/game/Saisie.java | 12 +++--- 2 files changed, 33 insertions(+), 18 deletions(-) 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 2e14dff..0cc3a3b 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -19,13 +19,17 @@ public class GameView extends View { private Saisie saisie; private Grille grille; private Paint circle; + private boolean state; public GameView(Context context,Saisie saisie,Grille grille) { super(context); this.saisie=saisie; this.grille=grille; - this.setOnTouchListener(new TouchListener()); + //this.setOnTouchListener(new TouchListener()); //on initialise les collections de pions initpions(); + initSizes(); + //state indique si le joueur soumet une combinaison ou false si elle est noté + this.state=true; this.circle = new Paint(); } @@ -40,32 +44,37 @@ public class GameView extends View { for (int x=0;x<4;x++) { this.circle.setColor(grille.pop()); //TODO: coordonnées propres - canvas.drawCircle((x*130+350),(y*130+100), 60, this.circle); - System.out.println("rond grille"); + canvas.drawCircle(( x*this.getWidth()/8+(this.getWidth()*21/68)),(y*this.getWidth()/8+this.getWidth()/10), this.getWidth()/17, this.circle); } } // affichage de la zone de saisie LinkedList saisie = new LinkedList(); - saisie.addAll(this.saisie.getChoix()); - for (int i=0;i<4;i++){ + saisie.addAll(this.saisie.getSelection()); + System.out.println(saisie.size()); + for (int i=0;i couleurs = new LinkedList(); - couleurs.addAll(this.saisie.getSelection()); - for (int i=0;i<6;i++){ + couleurs.addAll(this.saisie.getChoix()); + System.out.println(couleurs.size()); + for (int i=0;i chosenColors){ - this.choix.addAll(chosenColors); + public void setSelection(Collection chosenColors){ + this.selection.addAll(chosenColors); } - public void setChoix(Integer chosenColors, int index){ - this.choix.set(index, chosenColors); + public void setSelection(Integer chosenColors, int index){ + this.selection.set(index, chosenColors); } public Collection getChoix(){ return this.choix; } - public void setSelection(Collection colorsSelected){ - this.selection.addAll(colorsSelected); + public void setChoix(Collection colorsSelected){ + this.choix.addAll(colorsSelected); } public Collection getSelection(){ From c313f2846ed01855508fb70aebaf3ae4e91d1fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayyissa=20HA=C3=8FSSOUS?= Date: Wed, 5 Apr 2023 16:17:26 +0200 Subject: [PATCH 2/4] soumission ok et remplissage grille --- .../com/example/mastermind/game/GameView.java | 44 ++++++++++--------- .../com/example/mastermind/game/Grille.java | 10 ++++- .../com/example/mastermind/game/Saisie.java | 25 ++++++++--- .../mastermind/game/TouchListener.java | 25 +++++++++-- 4 files changed, 73 insertions(+), 31 deletions(-) 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 0cc3a3b..bc872e2 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -24,10 +24,9 @@ public class GameView extends View { super(context); this.saisie=saisie; this.grille=grille; - //this.setOnTouchListener(new TouchListener()); + this.setOnTouchListener(new TouchListener(this)); //on initialise les collections de pions initpions(); - initSizes(); //state indique si le joueur soumet une combinaison ou false si elle est noté this.state=true; this.circle = new Paint(); @@ -50,12 +49,10 @@ public class GameView extends View { // affichage de la zone de saisie LinkedList saisie = new LinkedList(); saisie.addAll(this.saisie.getSelection()); - System.out.println(saisie.size()); for (int i=0;i soumissions; private LinkedList notations; public Grille(){ this.soumissions=new LinkedList(); this.notations=new LinkedList(); + this.sizeSubs=0; } - public void addSoumission(Collection newSub){ - this.soumissions.addAll((this.soumissions.size()-4),newSub); + public void addSoumission(LinkedList newSub){ + for (int i=4;i>0;i--){ + System.out.println("i="+i+", new sub="+newSub); + this.soumissions.set(this.soumissions.size()-this.sizeSubs*4-i,newSub.pop()); + } + this.sizeSubs+=1; } public void initGrille(Collection SubToCopy){ 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 ca2582b..defe853 100644 --- a/app/src/main/java/com/example/mastermind/game/Saisie.java +++ b/app/src/main/java/com/example/mastermind/game/Saisie.java @@ -13,6 +13,7 @@ import java.util.LinkedList; */ public class Saisie { + private int sizeSelection; private LinkedList choix; private LinkedList selection; public Saisie(){ @@ -22,11 +23,24 @@ public class Saisie { // getters et setters - public void setSelection(Collection chosenColors){ - this.selection.addAll(chosenColors); + public void initSelection(Integer chosenColors){ + this.selection.removeAll(this.selection); + for (int i=0;i<4;i++){ + this.selection.add(chosenColors); + } + this.sizeSelection=0; + } - public void setSelection(Integer chosenColors, int index){ - this.selection.set(index, chosenColors); + public void addSelection(Integer chosenColors){ + if (this.sizeSelection<4){ + this.selection.set(this.sizeSelection,this.choix.get(chosenColors)); + this.sizeSelection+=1; + } + + } + + public int getSizeSelection(){ + return this.sizeSelection; } public Collection getChoix(){ @@ -34,10 +48,11 @@ public class Saisie { } public void setChoix(Collection colorsSelected){ + this.choix.removeAll(this.choix); this.choix.addAll(colorsSelected); } - public Collection getSelection(){ + public LinkedList getSelection(){ return this.selection; } 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 5d9f135..f90e813 100644 --- a/app/src/main/java/com/example/mastermind/game/TouchListener.java +++ b/app/src/main/java/com/example/mastermind/game/TouchListener.java @@ -4,9 +4,10 @@ import android.view.MotionEvent; import android.view.View; public class TouchListener implements View.OnTouchListener{ - - public TouchListener(){} - + private GameView view; + public TouchListener(GameView view) { + this.view=view; + } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getActionMasked(); @@ -15,7 +16,23 @@ public class TouchListener implements View.OnTouchListener{ if (action==MotionEvent.ACTION_UP) { - + if (v.getWidth()*689/420-v.getWidth()/15 Date: Wed, 5 Apr 2023 16:35:52 +0200 Subject: [PATCH 3/4] fix de l'ordre des soumissions --- .../java/com/example/mastermind/game/GameView.java | 1 + .../main/java/com/example/mastermind/game/Grille.java | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) 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 bc872e2..ea789fa 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -39,6 +39,7 @@ public class GameView extends View { //affichage des anciennes soumissions LinkedList grille = new LinkedList(); grille.addAll(this.grille.getSoumissions()); + System.out.println(grille.size()); for (int y=0; y<10;y++) { for (int x=0;x<4;x++) { this.circle.setColor(grille.pop()); 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 8c449fb..5228e2b 100644 --- a/app/src/main/java/com/example/mastermind/game/Grille.java +++ b/app/src/main/java/com/example/mastermind/game/Grille.java @@ -21,11 +21,13 @@ public class Grille { } public void addSoumission(LinkedList newSub){ - for (int i=4;i>0;i--){ - System.out.println("i="+i+", new sub="+newSub); - this.soumissions.set(this.soumissions.size()-this.sizeSubs*4-i,newSub.pop()); + if (this.sizeSubs<10) { + for (int i = 4; i > 0; i--) { + this.soumissions.remove(0); + this.soumissions.addLast(newSub.poll()); + } + this.sizeSubs += 1; } - this.sizeSubs+=1; } public void initGrille(Collection SubToCopy){ From fb38ee83745c28363f3a4560067df1202cb54fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayyissa=20HA=C3=8FSSOUS?= Date: Wed, 5 Apr 2023 16:57:35 +0200 Subject: [PATCH 4/4] ajout de commentaires et TODO --- .../com/example/mastermind/game/GameView.java | 18 ++++++++--- .../com/example/mastermind/game/Grille.java | 30 +++++++++++++++---- .../com/example/mastermind/game/Saisie.java | 9 ++++++ .../mastermind/game/TouchListener.java | 2 ++ 4 files changed, 49 insertions(+), 10 deletions(-) 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