Feat: Ajout de la logique addNewNumbers

- Ajout d'un générateur Random dans Game.java
- Implémentation de la méthode addNewNumbers pour ajouter une tuile 2, 4 ou 8
  sur une case vide aléatoire (Probabilités: 85% pour 2, 10% pour 4, 5% pour 8).
- Appel de addNewNumbers dans MainActivity avant printArray.
This commit is contained in:
Augustin ROUX 2025-04-03 18:28:46 +02:00
parent 6f77e8b347
commit f72fc5b733
2 changed files with 45 additions and 6 deletions

View File

@ -1,22 +1,61 @@
package legion.muyue.best2048;
import android.util.Log;
import java.util.ArrayList;
import java.util.Random;
public class Game {
private int[][] gameBoard; // Tableau 2D pour la grille de jeu
private int[][] gameBoard;
private Random random;
// Constructeur
public Game() {
gameBoard = new int[4][4]; // Initialise la grille 4x4
gameBoard = new int[4][4];
random = new Random();
}
// Méthode pour afficher la grille (pour les tests)
public void printArray() {
for (int[] row : gameBoard) {
// Utilisation du format exact de l'étape 1
String rowString = String.format("%6d%6d%6d%6d", row[0], row[1], row[2], row[3]);
Log.d("Game", rowString); // Utilise Log.d pour afficher dans le Logcat
Log.d("Game", rowString);
}
}
public void addNewNumbers() {
ArrayList<int[]> emptySpaces = new ArrayList<>();
// Trouve toutes les cases vides (valeur 0)
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
if (gameBoard[x][y] == 0) {
emptySpaces.add(new int[]{x, y}); // Ajoute les coordonnées (x, y)
}
}
}
// S'il y a des cases vides
if (!emptySpaces.isEmpty()) {
// Choisit une case vide au hasard
int choice = random.nextInt(emptySpaces.size());
int[] coordinates = emptySpaces.get(choice);
int x = coordinates[0];
int y = coordinates[1];
int newNumber;
int randomNumber = random.nextInt(100); // Génère un nombre aléatoire entre 0 et 99
if (randomNumber < 85) { // 85% de chance d'avoir un 2
newNumber = 2;
} else if (randomNumber < 95) { // 10% de chance d'avoir un 4 (de 85 à 94)
newNumber = 4;
} else { // 5% de chance d'avoir un 8 (de 95 à 99)
newNumber = 8;
}
// Place la nouvelle tuile sur la grille
gameBoard[x][y] = newNumber;
}
}
}

View File

@ -9,8 +9,8 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialisation du jeu
Game game = new Game();
game.printArray(); // Pour l'instant, pour les tests.
game.addNewNumbers(); // Ajoute une nouvelle tuile
game.printArray(); // Affiche la grille (avec la nouvelle tuile)
}
}