demande de la combi gagnante et affichage de la combi en fin de partie

This commit is contained in:
Haïssous Kayyissa 2023-04-09 09:59:28 +02:00
parent 30fd4f018e
commit 04f5c17704
6 changed files with 62 additions and 15 deletions

View File

@ -18,21 +18,28 @@ public class ChoiceCombi extends Activity implements SaisieActivity {
super.onCreate(savedInstanceState);
int[] tab = getIntent().getIntArrayExtra("pions");
this.pions=new Integer[6];
for (int i=0;i<tab.length-1;i++) {
for (int i=0;i<tab.length;i++) {
this.pions[i] = tab[i];
}
this.saisie=new Saisie();
this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
this.saisie.setChoix(this.pions);
this.view=new GameView(this,this,this.saisie, null);
setContentView(view);
}
public void changeState(){
if(this.saisie.getSizeSelection()==4) {
Intent returnIntent = new Intent();
int[] tabpions=new int[6];
for (int i=0;i<this.saisie.getSizeSelection();i++) {
tabpions[i] = this.saisie.getSelection()[i];
}
returnIntent.putExtra("choix", this.saisie.getSelection());
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
}
public void addChoix(int choix){
this.saisie.addSelection(choix);

View File

@ -15,6 +15,7 @@ import com.example.mastermind.game.Saisie;
public class GameActivity extends Activity implements SaisieActivity {
private Integer[] pionsAttaquant;
private Integer[] pionsDefenseur;
private Integer[] combiGagnante;
private Integer pionVide;
private Saisie saisie;
private Grille grille;
@ -32,8 +33,10 @@ public class GameActivity extends Activity implements SaisieActivity {
this.saisie=new Saisie();
this.grille=new Grille();
initpions();
if (this.bot){
this.theBot=new Bot(this.pionsAttaquant, this.pionsDefenseur, this.pionVide);
if(!this.bot){
this.combiGagnante=this.theBot.getCollectionWin();
} else if(!this.bot){
Intent choiceCombi = new Intent(this, ChoiceCombi.class);
int[] tabpions=new int[6];
for (int i=0;i<this.pionsAttaquant.length;i++) {
@ -46,13 +49,28 @@ public class GameActivity extends Activity implements SaisieActivity {
setContentView(view);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
int[] tab = data.getIntArrayExtra("choix");
this.combiGagnante=new Integer[6];
for (int i=0;i<tab.length;i++) {
this.combiGagnante[i] = tab[i];
}
}
}
}
//Change l'état de soumission à notation après qu'une combinaision ai été soumise puis inversement
public void changeState() {
if(!this.bot) {
if (!this.state) {
this.saisie.setChoix(this.pionsAttaquant);
this.grille.addNotation(this.saisie.getSelection());
victoire();
end();
this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
this.view.invalidate();
this.state = !this.state;
@ -69,7 +87,7 @@ public class GameActivity extends Activity implements SaisieActivity {
this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
//On fait noter la combinaison au Bot
this.grille.addNotation(this.theBot.notation((combi)));
victoire();
end();
this.view.invalidate();
}
}
@ -90,7 +108,7 @@ public class GameActivity extends Activity implements SaisieActivity {
this.view.invalidate();
}
public boolean victoire (){
public void end (){
Integer[] lastNotation = this.grille.getLastNotation();
int nbWin=0;
for (int i=0;i<4;i++){
@ -100,10 +118,16 @@ public class GameActivity extends Activity implements SaisieActivity {
}
if(nbWin==4) {
System.out.println("WIN");
return true;
} else {
victoire(true);
} else if (this.grille.getSizeSubs()==10){
System.out.println("LOSE");
return false;
victoire(false);
}
}
public void victoire(boolean gagne){
for (int i=0;i<4;i++){
this.saisie.addSelection(this.combiGagnante[i]);
}
}

View File

@ -74,4 +74,8 @@ public class Bot {
}
return tabnote;
}
public Integer[] getCollectionWin(){
return this.collectionWin;
}
}

View File

@ -25,12 +25,13 @@ public class GameView extends View {
private Bitmap cancelBtn;
private Bitmap backBtn;
private Bitmap validBtn;
private SaisieActivity activity;
public GameView(Context con, SaisieActivity context, Saisie saisie, Grille grille) {
super(con);
this.activity=context;
this.saisie=saisie;
this.grille=grille;
this.setOnTouchListener(new TouchListener(context));
//state indique true si le joueur soumet une combinaison ou false si elle est noté
this.circle = new Paint();
}

View File

@ -83,5 +83,8 @@ public class Grille {
}
return lastNotation;
}
public int getSizeSubs(){
return this.sizeSubs;
}
}

View File

@ -37,14 +37,22 @@ public class Saisie {
this.sizeSelection=0;
}
//addSelection permet d'ajouter un pion à la zone de saisie
//addSelection permet d'ajouter un pion par index à la zone de saisie
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(indexcolor));
this.sizeSelection+=1;
}
}
//addSelection permet d'ajouter un pion par index à la zone de saisie
public void addSelection(Integer color){
//On vérifie qu'il n'y a pas déjà 4 pions
if (this.sizeSelection<4){
this.selection.set(this.sizeSelection,color);
this.sizeSelection++;
}
}
public void removeSelection(Integer pionVide) {