Refactor: Amélioration de printArray et préparation pour pushUp

- Ajout de retour à la ligne (%n) et d'une ligne vide dans printArray
  pour une meilleure lisibilité dans Logcat.
- Ajout de la signature de la méthode pushUp() (vide) dans Game.java.
- Modification de MainActivity pour tester addNewNumbers/printArray 10 fois.
This commit is contained in:
Augustin ROUX 2025-04-03 18:31:09 +02:00
parent f72fc5b733
commit 1c7ae29651
2 changed files with 20 additions and 17 deletions

View File

@ -9,53 +9,52 @@ public class Game {
private int[][] gameBoard; private int[][] gameBoard;
private Random random; private Random random;
// Constructeur
public Game() { public Game() {
gameBoard = new int[4][4]; gameBoard = new int[4][4];
random = new Random(); random = new Random();
} }
// Méthode pour afficher la grille (pour les tests)
public void printArray() { public void printArray() {
for (int[] row : gameBoard) { for (int[] row : gameBoard) {
String rowString = String.format("%6d%6d%6d%6d", row[0], row[1], row[2], row[3]); // Ajout de %n pour un retour à la ligne après chaque ligne de la grille
String rowString = String.format("%6d%6d%6d%6d%n", row[0], row[1], row[2], row[3]);
Log.d("Game", rowString); Log.d("Game", rowString);
} }
// Ajout d'une ligne vide pour séparer les affichages de grille dans le Logcat
Log.d("Game", "\n");
} }
// Pas de changement dans la logique de addNewNumbers ici
public void addNewNumbers() { public void addNewNumbers() {
ArrayList<int[]> emptySpaces = new ArrayList<>(); ArrayList<int[]> emptySpaces = new ArrayList<>();
// Trouve toutes les cases vides (valeur 0)
for (int x = 0; x < 4; x++) { for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) { for (int y = 0; y < 4; y++) {
if (gameBoard[x][y] == 0) { if (gameBoard[x][y] == 0) {
emptySpaces.add(new int[]{x, y}); // Ajoute les coordonnées (x, y) emptySpaces.add(new int[]{x, y});
} }
} }
} }
// S'il y a des cases vides
if (!emptySpaces.isEmpty()) { if (!emptySpaces.isEmpty()) {
// Choisit une case vide au hasard
int choice = random.nextInt(emptySpaces.size()); int choice = random.nextInt(emptySpaces.size());
int[] coordinates = emptySpaces.get(choice); int[] coordinates = emptySpaces.get(choice);
int x = coordinates[0]; int x = coordinates[0];
int y = coordinates[1]; int y = coordinates[1];
int newNumber; int newNumber;
int randomNumber = random.nextInt(100); // Génère un nombre aléatoire entre 0 et 99 int randomNumber = random.nextInt(100);
if (randomNumber < 85) {
if (randomNumber < 85) { // 85% de chance d'avoir un 2
newNumber = 2; newNumber = 2;
} else if (randomNumber < 95) { // 10% de chance d'avoir un 4 (de 85 à 94) } else if (randomNumber < 95) {
newNumber = 4; newNumber = 4;
} else { // 5% de chance d'avoir un 8 (de 95 à 99) } else {
newNumber = 8; newNumber = 8;
} }
// Place la nouvelle tuile sur la grille
gameBoard[x][y] = newNumber; gameBoard[x][y] = newNumber;
} }
} }
public void pushUp() {
// La logique pour le mouvement vers le haut sera implémentée ici
}
} }

View File

@ -10,7 +10,11 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Game game = new Game(); Game game = new Game();
game.addNewNumbers(); // Ajoute une nouvelle tuile
game.printArray(); // Affiche la grille (avec la nouvelle tuile) // Test de addNewNumbers() plusieurs fois
for (int i = 0; i < 10; i++) {
game.addNewNumbers();
game.printArray();
}
} }
} }