72 lines
2.2 KiB
Java
72 lines
2.2 KiB
Java
|
|
package ui;
|
||
|
|
|
||
|
|
import android.content.Context;
|
||
|
|
import android.graphics.Canvas;
|
||
|
|
import android.graphics.Paint;
|
||
|
|
import android.view.View;
|
||
|
|
|
||
|
|
import androidx.annotation.NonNull;
|
||
|
|
|
||
|
|
import game.EtatJeu;
|
||
|
|
|
||
|
|
public class VueGrille extends View {
|
||
|
|
|
||
|
|
private EtatJeu etatJeu;
|
||
|
|
private final Paint pinceau = new Paint();
|
||
|
|
|
||
|
|
public VueGrille(Context contexte) {
|
||
|
|
super(contexte);
|
||
|
|
pinceau.setAntiAlias(true);
|
||
|
|
pinceau.setStyle(Paint.Style.FILL);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void definirEtatJeu(EtatJeu etatJeu) {
|
||
|
|
this.etatJeu = etatJeu;
|
||
|
|
invalidate(); // force le redessin
|
||
|
|
}
|
||
|
|
|
||
|
|
@Override
|
||
|
|
protected void onDraw(@NonNull Canvas canvas) {
|
||
|
|
super.onDraw(canvas);
|
||
|
|
|
||
|
|
if (etatJeu == null) return;
|
||
|
|
|
||
|
|
int largeur = getWidth();
|
||
|
|
int hauteur = getHeight();
|
||
|
|
|
||
|
|
float tailleCase = Math.min(
|
||
|
|
largeur / (float) EtatJeu.NB_COLONNES,
|
||
|
|
hauteur / (float) EtatJeu.NB_LIGNES
|
||
|
|
);
|
||
|
|
|
||
|
|
float margeGauche = (largeur - tailleCase * EtatJeu.NB_COLONNES) / 2f;
|
||
|
|
float margeHaut = (hauteur - tailleCase * EtatJeu.NB_LIGNES) / 2f;
|
||
|
|
|
||
|
|
for (int ligne = 0; ligne < EtatJeu.NB_LIGNES; ligne++) {
|
||
|
|
for (int colonne = 0; colonne < EtatJeu.NB_COLONNES; colonne++) {
|
||
|
|
|
||
|
|
int type = etatJeu.obtenirCase(ligne, colonne);
|
||
|
|
definirCouleur(type);
|
||
|
|
|
||
|
|
float x1 = margeGauche + colonne * tailleCase + 6;
|
||
|
|
float y1 = margeHaut + ligne * tailleCase + 6;
|
||
|
|
float x2 = margeGauche + (colonne + 1) * tailleCase - 6;
|
||
|
|
float y2 = margeHaut + (ligne + 1) * tailleCase - 6;
|
||
|
|
|
||
|
|
canvas.drawRoundRect(x1, y1, x2, y2, 20, 20, pinceau);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private void definirCouleur(int type) {
|
||
|
|
switch (type % EtatJeu.NB_TYPES) {
|
||
|
|
case 0: pinceau.setARGB(255, 200, 200, 200); break;
|
||
|
|
case 1: pinceau.setARGB(255, 255, 105, 180); break;
|
||
|
|
case 2: pinceau.setARGB(255, 90, 230, 200); break;
|
||
|
|
case 3: pinceau.setARGB(255, 100, 170, 255); break;
|
||
|
|
case 4: pinceau.setARGB(255, 255, 220, 90); break;
|
||
|
|
case 5: pinceau.setARGB(255, 255, 140, 90); break;
|
||
|
|
case 6: pinceau.setARGB(255, 255, 90, 90); break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|