Ajout d'un controleur

This commit is contained in:
Sehl Aylane
2026-03-11 15:52:10 +01:00
parent 648172d51a
commit 34412d84cd
14 changed files with 1219 additions and 1136 deletions
+56 -123
View File
@@ -1,124 +1,57 @@
package sae.chuzzle;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import sae.chuzzle.EtatJeu;
import sae.chuzzle.VueGrille;
public class MainActivity extends Activity implements View.OnClickListener {
private EtatJeu etatJeu;
private VueGrille vueGrille;
private TextView tvScore;
private TextView tvCoups;
private RadioButton rbLigne;
private RadioButton rbDroite;
private Spinner spinnerIndex;
private Button btnJouer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// - Lire la graine et les options
long graine = getIntent().getLongExtra("graine", System.currentTimeMillis());
boolean daltonien = getSharedPreferences("chuzzle_prefs", MODE_PRIVATE)
.getBoolean("daltonien", false);
boolean hardMode = getSharedPreferences("chuzzle_prefs", MODE_PRIVATE)
.getBoolean("hard_mode", false);
// - Modèle
etatJeu = new EtatJeu(graine, hardMode);
// - Récupérer les vues depuis le XML
tvScore = findViewById(R.id.tvScore);
tvCoups = findViewById(R.id.tvCoups);
vueGrille = findViewById(R.id.vueGrille);
rbLigne = findViewById(R.id.rbLigne);
rbDroite = findViewById(R.id.rbDroite);
spinnerIndex = findViewById(R.id.spinnerIndex);
btnJouer = findViewById(R.id.btnJouer);
// - Configurer la vue
vueGrille.definirGrille(etatJeu.obtenirGrille());
vueGrille.definirVerrous(etatJeu.obtenirVerrous());
vueGrille.definirModeDaltonien(daltonien);
// - Configurer le spinner
String[] indices = {"0", "1", "2", "3", "4", "5"};
ArrayAdapter<String> adaptateur = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
indices
);
adaptateur.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerIndex.setAdapter(adaptateur);
// --- Bouton jouer ---
btnJouer.setOnClickListener(this);
}
// GESTION DES CLICS
@Override
public void onClick(View v) {
if (v == btnJouer) {
gererCoupJoueur();
}
}
// COORDINATION
private void gererCoupJoueur() {
boolean estLigne = rbLigne.isChecked();
int index = spinnerIndex.getSelectedItemPosition();
int sens;
if (rbDroite.isChecked()) {
sens = +1;
} else {
sens = -1;
}
boolean accepte = etatJeu.appliquerCoup(estLigne, index, sens);
if (!accepte) {
Toast.makeText(
this,
"Coup invalide : aucune serie creee !",
Toast.LENGTH_SHORT
).show();
}
rafraichirAffichage();
if (etatJeu.estTerminee()) {
Toast.makeText(
this,
"Partie terminee ! Score final : " + etatJeu.obtenirScore(),
Toast.LENGTH_LONG
).show();
btnJouer.setEnabled(false);
}
}
private void rafraichirAffichage() {
tvScore.setText("Score : " + etatJeu.obtenirScore());
tvCoups.setText("Coups : " + etatJeu.obtenirNbCoups());
vueGrille.definirGrille(etatJeu.obtenirGrille());
vueGrille.definirVerrous(etatJeu.obtenirVerrous());
}
package sae.chuzzle;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener {
private Controleur controleur;
private Button btnJouer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// --- Modèle ---
long graine = getIntent().getLongExtra("graine", System.currentTimeMillis());
boolean hardMode = getSharedPreferences("chuzzle_prefs", MODE_PRIVATE)
.getBoolean("hard_mode", false);
boolean daltonien = getSharedPreferences("chuzzle_prefs", MODE_PRIVATE)
.getBoolean("daltonien", false);
EtatJeu etatJeu = new EtatJeu(graine, hardMode);
// --- Vue ---
VueGrille vueGrille = findViewById(R.id.vueGrille);
vueGrille.definirModeDaltonien(daltonien);
// --- Controleur ---
btnJouer = findViewById(R.id.btnJouer);
btnJouer.setOnClickListener(this);
controleur = new Controleur(
this,
etatJeu,
vueGrille,
(TextView) findViewById(R.id.tvScore),
(TextView) findViewById(R.id.tvCoups),
(RadioButton) findViewById(R.id.rbLigne),
(RadioButton) findViewById(R.id.rbDroite),
(Spinner) findViewById(R.id.spinnerIndex),
btnJouer
);
}
@Override
public void onClick(View v) {
if (v == btnJouer) {
controleur.gererCoupJoueur();
}
}
}