Feat: Implémentation de la logique pushUp
- Ajout de l'attribut 'score' à Game.java. - Implémentation de la méthode pushUp dans Game.java pour gérer: - Le déplacement des tuiles vers le haut dans les cases vides. - La fusion des tuiles de même valeur. - La mise à jour du score lors d'une fusion. - Modification de MainActivity pour tester pushUp.
This commit is contained in:
parent
1c7ae29651
commit
276cf2e579
@ -8,23 +8,22 @@ public class Game {
|
||||
|
||||
private int[][] gameBoard;
|
||||
private Random random;
|
||||
private int score = 0;
|
||||
|
||||
public Game() {
|
||||
gameBoard = new int[4][4];
|
||||
random = new Random();
|
||||
// Le score est initialisé à 0 par défaut
|
||||
}
|
||||
|
||||
public void printArray() {
|
||||
for (int[] row : gameBoard) {
|
||||
// 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);
|
||||
}
|
||||
// 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() {
|
||||
ArrayList<int[]> emptySpaces = new ArrayList<>();
|
||||
|
||||
@ -53,8 +52,42 @@ public class Game {
|
||||
gameBoard[x][y] = newNumber;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void pushUp() {
|
||||
// La logique pour le mouvement vers le haut sera implémentée ici
|
||||
// Itération sur chaque colonne
|
||||
for (int y = 0; y < 4; y++) {
|
||||
// Itération sur chaque ligne de la colonne en commençant par la deuxième ligne (index 1)
|
||||
for (int x = 1; x < 4; x++) {
|
||||
// Si la case actuelle n'est pas vide
|
||||
if (gameBoard[x][y] != 0) {
|
||||
int value = gameBoard[x][y]; // Stocke la valeur de la case actuelle
|
||||
int currentX = x; // Variable pour suivre la position courante lors du déplacement vers le haut
|
||||
|
||||
// Déplacement vers le haut tant que la case précédente est vide et qu'on n'est pas en haut du tableau
|
||||
while (currentX > 0 && gameBoard[currentX - 1][y] == 0) {
|
||||
currentX--; // Décrémente pour remonter d'une ligne
|
||||
}
|
||||
|
||||
// Traitement des cas après le déplacement
|
||||
if (currentX == 0) { // Si on est arrivé en haut du tableau
|
||||
gameBoard[0][y] = value; // Place la valeur en haut
|
||||
// Vide la case d'origine seulement si la tuile a bougé
|
||||
if (currentX != x) {
|
||||
gameBoard[x][y] = 0;
|
||||
}
|
||||
} else if (gameBoard[currentX - 1][y] != value) { // Si la case précédente a une valeur différente
|
||||
gameBoard[currentX][y] = value; // Place la valeur à la position actuelle (juste en dessous de la case différente)
|
||||
// Vide la case d'origine seulement si la tuile a bougé
|
||||
if (currentX != x) {
|
||||
gameBoard[x][y] = 0;
|
||||
}
|
||||
} else { // Si la case précédente a la même valeur (Cas de fusion)
|
||||
gameBoard[currentX - 1][y] *= 2; // Double la valeur de la case précédente (fusion)
|
||||
score += gameBoard[currentX - 1][y]; // Ajoute le résultat de la fusion au score
|
||||
gameBoard[x][y] = 0; // Vide la case d'origine (toujours nécessaire en cas de fusion)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -11,10 +11,13 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
Game game = new Game();
|
||||
|
||||
// Test de addNewNumbers() plusieurs fois
|
||||
for (int i = 0; i < 10; i++) {
|
||||
game.addNewNumbers();
|
||||
game.printArray();
|
||||
}
|
||||
// Initialisation avec quelques tuiles pour le test
|
||||
game.addNewNumbers();
|
||||
game.addNewNumbers();
|
||||
game.addNewNumbers();
|
||||
|
||||
game.printArray(); // Affichage initial
|
||||
game.pushUp(); // Appel de pushUp()
|
||||
game.printArray(); // Affichage après pushUp()
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user