From 015840b07b25d7a1854932714252f7fcb1237130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayyissa=20HA=C3=8FSSOUS?= Date: Mon, 3 Apr 2023 22:40:02 +0200 Subject: [PATCH] maj grille et saisie, onDraw appele deux fois ??? --- .../example/mastermind/HotSeatActivity.java | 2 +- .../com/example/mastermind/game/GameView.java | 60 +++++++++++++++++++ .../com/example/mastermind/game/Grille.java | 39 ++++++++++++ .../com/example/mastermind/game/Saisie.java | 44 ++++++-------- app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/values/colors.xml | 2 + 6 files changed, 123 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/example/mastermind/HotSeatActivity.java b/app/src/main/java/com/example/mastermind/HotSeatActivity.java index e67ff06..d3c417f 100644 --- a/app/src/main/java/com/example/mastermind/HotSeatActivity.java +++ b/app/src/main/java/com/example/mastermind/HotSeatActivity.java @@ -12,6 +12,6 @@ public class HotSeatActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(new GameView(this, new Saisie(0), new Grille())); + setContentView(new GameView(this, new Saisie(), new Grille())); } } \ No newline at end of file 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 aff2cf1..543a4e5 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -2,16 +2,76 @@ package com.example.mastermind.game; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; import android.view.View; +import com.example.mastermind.R; + +import java.util.Collection; +import java.util.LinkedList; + public class GameView extends View { + + private Collection pionsAttaquant; + private Collection pionsDefenseur; + private Collection pionsPasPlaces; + private Saisie saisie; + private Grille grille; + private Paint circle; public GameView(Context context,Saisie saisie,Grille grille) { super(context); + this.saisie=saisie; + this.grille=grille; + //on initialise les collections de pions + initpions(); + this.circle = new Paint(); } @Override protected void onDraw(Canvas canvas){ super.onDraw(canvas); + this.setBackgroundColor(this.getResources().getColor(R.color.grey)); + LinkedList grille = (LinkedList) this.grille.getSoumissions(); + System.out.println("test?"); + for (int y=0; y<10;y++) { + for (int x=0;x<4;x++) { + /*this.circle.setColor(grille.pop()); + canvas.drawCircle(x*10,y*10, 50, this.circle); + System.out.println("rond grille");*/ + } + } + } + public void redraw(){ + invalidate(); + } + + //initialise les collections de pions + public void initpions(){ + //on initialise les pions + this.pionsPasPlaces = new LinkedList(); + for (int i=0;i<4;i++){ + this.pionsPasPlaces.add(this.getResources().getColor(R.color.pionVide)); + } + + this.pionsDefenseur = new LinkedList(); + this.pionsDefenseur.add(this.getResources().getColor(R.color.white)); + this.pionsDefenseur.add(this.getResources().getColor(R.color.black)); + + this.pionsAttaquant = new LinkedList(); + this.pionsAttaquant.add(this.getResources().getColor(R.color.pink)); + this.pionsAttaquant.add(this.getResources().getColor(R.color.purple)); + this.pionsAttaquant.add(this.getResources().getColor(R.color.blue)); + this.pionsAttaquant.add(this.getResources().getColor(R.color.green)); + this.pionsAttaquant.add(this.getResources().getColor(R.color.yellow)); + this.pionsAttaquant.add(this.getResources().getColor(R.color.white)); + + // on inisialise la saisie + saisie.setSelection(this.pionsAttaquant); + saisie.setChoix(this.pionsPasPlaces); + + // on rempli la grille de cases grises + grille.initGrille(this.pionsPasPlaces); } } 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 5d94f65..a4d4159 100644 --- a/app/src/main/java/com/example/mastermind/game/Grille.java +++ b/app/src/main/java/com/example/mastermind/game/Grille.java @@ -1,4 +1,43 @@ package com.example.mastermind.game; +import android.graphics.Color; + +import java.util.Collection; +import java.util.Deque; +import java.util.LinkedList; + +/* +représente la grille de jeu à savoir la liste des soumissions ainsi que leur notation + */ public class Grille { + private LinkedList soumissions; + private LinkedList notations; + + public Grille(){ + this.soumissions=new LinkedList(); + this.notations=new LinkedList(); + } + + public void addSoumission(Collection newSub){ + this.soumissions.addAll((this.soumissions.size()-4),newSub); + } + + public void initGrille(Collection SubToCopy){ + for(int i=0;i<10;i++){ + this.soumissions.addAll(SubToCopy); + } + } + + public void addNotation(Collection newNot){ + this.notations.addAll(newNot); + } + + public Collection getSoumissions(){ + return this.soumissions; + } + public Collection getNotations(){ + return this.notations; + } + + } 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 6419b4b..1b49854 100644 --- a/app/src/main/java/com/example/mastermind/game/Saisie.java +++ b/app/src/main/java/com/example/mastermind/game/Saisie.java @@ -1,49 +1,43 @@ package com.example.mastermind.game; +import android.content.Context; import android.graphics.Color; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedList; + /* * Classe qui correspond à uen zone de saisie (soumission d'une combinaison ou notation) * choix correspond aux couleurs pouvant être saisies en fonction de la situation et selection à la combinaison choisie */ public class Saisie { - private Color[] choix; - private Color[] selection; - public Saisie(int state){ - // state correspond à si on soumet une combinaison ou si on la note (0 combi, 1 notation) - if (state==0){ - choixCombinaison(); - } else if (state==1){ - notation(); - } // eventuellement signaler une erreur si on a une autre valeur - } - - // rempli le tableau de couleur avec les pions de l'attaquant - public void choixCombinaison(){ - this.choix = new Color[6]; - } - - // Rempli le tableau de couleur avec les pions du défenseur - public void notation(){ - this.choix = new Color[2]; + private LinkedList choix; + private LinkedList selection; + public Saisie(){ + this.choix=new LinkedList(); + this.selection=new LinkedList(); } // getters et setters - public void setChoix(Color[] colorsToChose){ - this.choix=colorsToChose; + public void setChoix(Collection chosenColors){ + this.choix.addAll(chosenColors); + } + public void setChoix(Integer chosenColors, int index){ + this.choix.set(index, chosenColors); } - public Color[] getChoix(){ + public Collection getChoix(){ return this.choix; } - public void setSelection(Color[] colorsSelected){ - this.selection=colorsSelected; + public void setSelection(Collection colorsSelected){ + this.selection.addAll(colorsSelected); } - public Color[] getSelection(){ + public Collection getSelection(){ return this.selection; } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f3cbe44..fef2934 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -33,7 +33,7 @@