Ajout des fonctions necessaire et la vue de grille
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package com.example.myapplication;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import game.EtatJeu;
|
||||
import ui.VueGrille;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
EtatJeu etatJeu = new EtatJeu();
|
||||
VueGrille vueGrille = new VueGrille(this);
|
||||
vueGrille.definirEtatJeu(etatJeu);
|
||||
|
||||
setContentView(vueGrille);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user