Ajout écran fin de partie

This commit is contained in:
Mathis CHAIGNEAU 2023-04-08 15:30:51 +02:00
parent b93daedfb9
commit e0df728757
11 changed files with 161 additions and 17 deletions

View File

@ -14,6 +14,9 @@
<activity <activity
android:name=".ChoixDuMotDePasse" android:name=".ChoixDuMotDePasse"
android:exported="false" /> android:exported="false" />
<activity
android:name=".FinDePartieActivity"
android:exported="false" />
<activity <activity
android:name=".SettingActivity" android:name=".SettingActivity"
android:exported="false" /> android:exported="false" />

View File

@ -0,0 +1,48 @@
package com.example.mastermind;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.example.mastermind.vue.mastermind.UnePiece;
public class FinDePartieActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fin_de_partie);
boolean trouve = getIntent().getBooleanExtra("trouve", false);
int[] code = getIntent().getIntArrayExtra("code");
int tours = getIntent().getIntExtra("tour", 0);
if (trouve){
((TextView)findViewById(R.id.texte_gagnant)).setText("Victoire de l'attaquant");
} else {
((TextView)findViewById(R.id.texte_gagnant)).setText("Victoire du défenseur");
}
((UnePiece)findViewById(R.id.reponse_code1)).setColor(code[0]);
((UnePiece)findViewById(R.id.reponse_code2)).setColor(code[1]);
((UnePiece)findViewById(R.id.reponse_code3)).setColor(code[2]);
((UnePiece)findViewById(R.id.reponse_code4)).setColor(code[3]);
if (trouve) {
if (tours == 0) {
((TextView)findViewById(R.id.texte_nombre_coups)).setText("Le défenseur a trouvé le code en 1 tentative");
} else {
((TextView)findViewById(R.id.texte_nombre_coups)).setText("Le défenseur a trouvé le code en " + (tours+1) + " tentatives");
}
}
}
@Override
public void onBackPressed() {
Intent menu=new Intent(this, MenuActivity.class);
this.startActivity(menu);
this.finish();
}
}

View File

@ -2,6 +2,7 @@ package com.example.mastermind;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@ -54,37 +55,42 @@ public class MasterMindActivity extends AppCompatActivity {
public void nextTurn(){ public void nextTurn(){
if(this.tour<9){ if(this.tour<9){
//on affiche la correction //on affiche la correction
this.afficherCorrection((LinearLayout) this.jeu.getChildAt(this.tour)); boolean gagne = this.afficherCorrection((LinearLayout) this.jeu.getChildAt(this.tour));
//on supprime les listener //on supprime les listener
if(this.tour>0){ if(this.tour>0){
LinearLayout anciennesPieces =(LinearLayout) this.jeu.getChildAt(this.tour-1); LinearLayout anciennesPieces =(LinearLayout) this.jeu.getChildAt(this.tour-1);
for(int i=0; i<anciennesPieces.getChildCount(); i++){anciennesPieces.getChildAt(i).setOnTouchListener(null);} for(int i=0; i<anciennesPieces.getChildCount(); i++){anciennesPieces.getChildAt(i).setOnTouchListener(null);}
} }
//on incremente le tour
this.tour++; if (gagne){
//on récupere le LinearLayout des pieces du tour this.finDePartie(true);
LinearLayout pieces =(LinearLayout) this.jeu.getChildAt(this.tour); } else {
//on ajoute le listener //on incremente le tour
for(int i=0; i<pieces.getChildCount(); i++){ this.tour++;
UnePiece p=(UnePiece) pieces.getChildAt(i); //on récupere le LinearLayout des pieces du tour
p.setOnTouchListener(new MonOnTouchListener(p, this.vide)); LinearLayout pieces =(LinearLayout) this.jeu.getChildAt(this.tour);
//on ajoute le listener
for(int i=0; i<pieces.getChildCount(); i++) {
UnePiece p = (UnePiece) pieces.getChildAt(i);
p.setOnTouchListener(new MonOnTouchListener(p, this.vide));
}
} }
}else{ }else{
//on affiche la correction //on affiche la correction
this.afficherCorrection((LinearLayout) this.jeu.getChildAt(this.tour)); boolean gagne = this.afficherCorrection((LinearLayout) this.jeu.getChildAt(this.tour));
//on supprime les listener //on supprime les listener
if(this.tour>0){ if(this.tour>0){
LinearLayout anciennesPieces =(LinearLayout) this.jeu.getChildAt(this.tour-1); LinearLayout anciennesPieces =(LinearLayout) this.jeu.getChildAt(this.tour-1);
for(int i=0; i<anciennesPieces.getChildCount(); i++){anciennesPieces.getChildAt(i).setOnTouchListener(null);} for(int i=0; i<anciennesPieces.getChildCount(); i++){anciennesPieces.getChildAt(i).setOnTouchListener(null);}
} }
this.finDePartie(); this.finDePartie(gagne);
} }
} }
public void afficherCorrection(LinearLayout pieces){ public boolean afficherCorrection(LinearLayout pieces){
int[] colorpiece=new int[4]; int[] colorpiece=new int[4];
for(int i=0; i<4; i++){ for(int i=0; i<4; i++){
colorpiece[i]=((UnePiece)pieces.getChildAt(i)).getColor(); colorpiece[i]=((UnePiece)pieces.getChildAt(i)).getColor();
@ -111,12 +117,16 @@ public class MasterMindActivity extends AppCompatActivity {
} }
} }
} }
if(gagner){ return gagner;
this.finDePartie();
}
} }
public void finDePartie(){ public void finDePartie(boolean trouve){
Log.d("finDePartie", " finDePartie: "+trouve);
Intent fin=new Intent(this, FinDePartieActivity.class);
fin.putExtra("trouve", trouve);
fin.putExtra("tour", this.tour);
fin.putExtra("code", this.code);
this.startActivity(fin);
this.finish();
} }
} }

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/marron"
>
<TextView
android:id="@+id/titre_fin_de_partie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fin de partie"
android:textColor="@color/black"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:textSize="@dimen/titre"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/texte_gagnant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gagnant"
android:textColor="@color/black"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:textSize="@dimen/texte"
android:layout_centerHorizontal="true"
android:layout_below="@+id/titre_fin_de_partie"
/>
<LinearLayout
android:id="@+id/reponse_combinaison"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/texte_gagnant"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/reponse_combinaiton_titre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="La combinaison était :"
android:textColor="@color/black"
android:layout_gravity="center"
android:textSize="@dimen/texte"
android:layout_centerHorizontal="true"
/>
<LinearLayout
android:id="@+id/reponse_combinaison_combinaison"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
>
<com.example.mastermind.vue.mastermind.UnePiece android:id="@+id/reponse_code1" android:layout_width="@dimen/pieceM" android:layout_height="@dimen/pieceM" android:layout_margin="@dimen/margeM"/>
<com.example.mastermind.vue.mastermind.UnePiece android:id="@+id/reponse_code2" android:layout_width="@dimen/pieceM" android:layout_height="@dimen/pieceM" android:layout_margin="@dimen/margeM"/>
<com.example.mastermind.vue.mastermind.UnePiece android:id="@+id/reponse_code3" android:layout_width="@dimen/pieceM" android:layout_height="@dimen/pieceM" android:layout_margin="@dimen/margeM"/>
<com.example.mastermind.vue.mastermind.UnePiece android:id="@+id/reponse_code4" android:layout_width="@dimen/pieceM" android:layout_height="@dimen/pieceM" android:layout_margin="@dimen/margeM"/>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/texte_nombre_coups"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="@color/black"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:textSize="@dimen/texte_petit"
android:layout_centerHorizontal="true"
android:layout_below="@+id/reponse_combinaison"
/>
</RelativeLayout>

View File

@ -5,4 +5,6 @@
<dimen name="correction">15dp</dimen> <dimen name="correction">15dp</dimen>
<dimen name="marge_correction">5dp</dimen> <dimen name="marge_correction">5dp</dimen>
<dimen name="titre">30dp</dimen> <dimen name="titre">30dp</dimen>
<dimen name="texte">20dp</dimen>
<dimen name="texte_petit">15dp</dimen>
</resources> </resources>