Files
SAE41_2025/ui/VueGrille.java
T

79 lines
2.5 KiB
Java
Raw Normal View History

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);
2026-03-03 22:09:23 +01:00
pinceau.setARGB(255, 255, 255, 255);
pinceau.setStyle(Paint.Style.STROKE);
pinceau.setStrokeWidth(6);
pinceau.setARGB(255, 0, 0, 0);
canvas.drawRoundRect(x1, y1, x2, y2, 20, 20, pinceau);
pinceau.setStyle(Paint.Style.FILL);
}
}
}
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;
}
}
}