diff --git a/app/src/main/java/com/example/mastermind/HotSeatActivity.java b/app/src/main/java/com/example/mastermind/HotSeatActivity.java index d3c417f..19872de 100644 --- a/app/src/main/java/com/example/mastermind/HotSeatActivity.java +++ b/app/src/main/java/com/example/mastermind/HotSeatActivity.java @@ -12,6 +12,7 @@ public class HotSeatActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(new GameView(this, new Saisie(), new Grille())); + boolean bot = getIntent().getBooleanExtra("bot", false); + setContentView(new GameView(this, new Saisie(), new Grille(), bot)); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mastermind/MainActivity.java b/app/src/main/java/com/example/mastermind/MainActivity.java index f8e1f86..c594d4b 100644 --- a/app/src/main/java/com/example/mastermind/MainActivity.java +++ b/app/src/main/java/com/example/mastermind/MainActivity.java @@ -23,29 +23,31 @@ public class MainActivity extends Activity { mHotSeat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent tp1Intent = new Intent(MainActivity.this, HotSeatActivity.class); - startActivity(tp1Intent); + Intent HotSeat = new Intent(MainActivity.this, HotSeatActivity.class); + HotSeat.putExtra("bot", false); + startActivity(HotSeat); } }); - /*mORDI.setOnClickListener(new View.OnClickListener() { + mORDI.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent tp2Intent = new Intent(MainActivity.this, ORDI.class); - startActivity(tp2Intent); + Intent ordi = new Intent(MainActivity.this, HotSeatActivity.class); + ordi.putExtra("bot", true); + startActivity(ordi); } - });*/ + }); mSettings.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent tp3Intent = new Intent(MainActivity.this, SettingsActivity.class); - startActivity(tp3Intent); + Intent settings = new Intent(MainActivity.this, SettingsActivity.class); + startActivity(settings); } }); /*mTP4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent tp4Intent = new Intent(MainActivity.this, TP4.class); - startActivity(tp4Intent); + Intent rules = new Intent(MainActivity.this, TP4.class); + startActivity(rules); } });*/ } diff --git a/app/src/main/java/com/example/mastermind/game/Bot.java b/app/src/main/java/com/example/mastermind/game/Bot.java index 3ae0945..12352b6 100644 --- a/app/src/main/java/com/example/mastermind/game/Bot.java +++ b/app/src/main/java/com/example/mastermind/game/Bot.java @@ -19,27 +19,26 @@ public class Bot { private Integer pionVide; private Integer[] pionsNotation; - public Bot(Collection pionsAutorisés, Integer[] pionsNotation, Integer pionVide){ + public Bot(Integer[] pionsAutorisés, Integer[] pionsNotation, Integer pionVide){ this.collectionWin = new Integer[4]; this.pionVide=pionVide; this.pionsNotation=pionsNotation; generationCombiWin(pionsAutorisés); } - protected void generationCombiWin(Collection pions){ + protected void generationCombiWin(Integer[] pions){ Random rand = new Random(); - int nbPions = pions.size(); - Integer[] tabPions=(Integer[]) pions.toArray(); + int nbPions = pions.length; for (int i=0;i<4;i++){ - this.collectionWin[i]=tabPions[rand.nextInt(nbPions)]; + this.collectionWin[i]=pions[rand.nextInt(nbPions)]; } } - public Collection notation(Integer[] soumission){ - Collection note=new LinkedList(); + public Integer[] notation(Integer[] soumission){ + Integer[] note=new Integer[4]; for(int i=0; i<4;i++) { if (this.collectionWin[i] == soumission[i]) { - note.add(this.pionsNotation[1]); + note[i]=(this.pionsNotation[1]); } } //On crée une copie de la combinaison gagnante pour la modifier et éviter la fausse répétition de pions blancs @@ -47,9 +46,9 @@ public class Bot { for(int i=0; i<4;i++) { for (int y=0; y<4;y++) { if (i!=y){ - if (this.collectionWin[y] == soumission[i]){ - note.add(this.pionsNotation[0]); - this.collectionWin[y]=null; + if (copyCombi[y] == soumission[i]){ + note[i]=(copyCombi[0]); + copyCombi[y]=null; } } } 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 6d780e9..6ee5e5d 100644 --- a/app/src/main/java/com/example/mastermind/game/GameView.java +++ b/app/src/main/java/com/example/mastermind/game/GameView.java @@ -13,20 +13,24 @@ import java.util.LinkedList; public class GameView extends View { - private Collection pionsAttaquant; - private Collection pionsDefenseur; - private Collection pionsPasPlaces; + private Integer[] pionsAttaquant; + private Integer[] pionsDefenseur; + private Integer pionVide; private Saisie saisie; private Grille grille; + private boolean bot; + private Bot theBot; private Paint circle; private boolean state; - public GameView(Context context,Saisie saisie,Grille grille) { + public GameView(Context context,Saisie saisie,Grille grille, boolean bot) { super(context); this.saisie=saisie; this.grille=grille; + this.bot=bot; + initpions(); + this.theBot=new Bot(this.pionsAttaquant, this.pionsDefenseur, this.pionVide); this.setOnTouchListener(new TouchListener(this)); //on initialise les collections de pions - initpions(); //state indique true si le joueur soumet une combinaison ou false si elle est noté this.state=true; this.circle = new Paint(); @@ -50,10 +54,9 @@ 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(); - for (int i=0;i<4;i++){ - this.pionsPasPlaces.add(this.getResources().getColor(R.color.pionVide)); - } + this.pionVide = this.getResources().getColor(R.color.grey); //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)); + this.pionsDefenseur = new Integer[2]; + this.pionsDefenseur[0]=this.getResources().getColor(R.color.white); + this.pionsDefenseur[1]=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)); - 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)); + this.pionsAttaquant = new Integer[6]; + this.pionsAttaquant[0]=this.getResources().getColor(R.color.pink); + this.pionsAttaquant[1]=this.getResources().getColor(R.color.purple); + this.pionsAttaquant[2]=this.getResources().getColor(R.color.blue); + this.pionsAttaquant[3]=this.getResources().getColor(R.color.green); + this.pionsAttaquant[4]=this.getResources().getColor(R.color.yellow); + this.pionsAttaquant[5]=this.getResources().getColor(R.color.white); // on inisialise la saisie saisie.setChoix(this.pionsAttaquant); saisie.initSelection(this.getResources().getColor(R.color.pionVide)); // on rempli la grille de cases grises - grille.initGrille(this.pionsPasPlaces); + grille.initGrille(this.pionVide); } } 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 a40dfed..e4b00d1 100644 --- a/app/src/main/java/com/example/mastermind/game/Grille.java +++ b/app/src/main/java/com/example/mastermind/game/Grille.java @@ -10,6 +10,7 @@ import java.util.LinkedList; représente la grille de jeu à savoir la liste des soumissions ainsi que leur notation */ public class Grille { + private Integer pionVide; //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 @@ -23,38 +24,48 @@ public class Grille { } // Méthode permettant d'ajouter une soumission - public void addSoumission(LinkedList newSub){ + public void addSoumission(Integer[] newSub){ //le nombre de soumissions ne doit pas dépasser 10 if (this.sizeSubs<10) { for (int i=0; i<4; i++) { //On retire une ligne vide en haut pour remonter l'affichage this.soumissions.remove(0); + this.notations.remove(0); //On ajoute ensuite une deriere ligne qui correspond à la nouvelle soumission - this.soumissions.addLast(newSub.poll()); + this.soumissions.addLast(newSub[i]); + //Et une ligne vide pour les notations + this.notations.addLast(this.pionVide); + } this.sizeSubs += 1; } } // Méthode qui permet d'initialiser la grille vide - public void initGrille(Collection SubToCopy){ + public void initGrille(Integer pionVide){ + this.pionVide=pionVide; //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); + for(int y=0;y<4;y++) { + this.soumissions.add(pionVide); + this.notations.add(pionVide); + } } // 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){ + public void addNotation(Integer[] 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()); + //On retire la derniere ligne vide + this.notations.removeLast(); } + for (int i=0; i<4; i++) { + //On ajoute ensuite une deriere ligne qui correspond à la nouvelle note + this.notations.addLast(newNot[i]); + } + } //getters des soumissions et 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 ffa80bb..21e29ee 100644 --- a/app/src/main/java/com/example/mastermind/game/Saisie.java +++ b/app/src/main/java/com/example/mastermind/game/Saisie.java @@ -28,20 +28,20 @@ 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){ + public void initSelection(Integer pionVide){ this.selection.removeAll(this.selection); for (int i=0;i<4;i++){ - this.selection.add(chosenColors); + this.selection.add(pionVide); } //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){ + public void addSelection(int indexcolor){ //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.selection.set(this.sizeSelection,this.choix.get(indexcolor)); this.sizeSelection+=1; } @@ -63,13 +63,19 @@ public class Saisie { } //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){ + public void setChoix(Integer[] colorsSelected){ this.choix.removeAll(this.choix); - this.choix.addAll(colorsSelected); + for (int i=0;i getSelection(){ - return this.selection; + public Integer[] getSelection(){ + Integer[] selectiontab=new Integer[4]; + for (int i=0;i