124 lines
3.7 KiB
Java
124 lines
3.7 KiB
Java
|
|
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());
|
||
|
|
}
|
||
|
|
}
|