Dans un jeu de 2048, les tuiles ne peuvent fusionner qu'avec d'autres tuiles de valeur similaire dans la même direction que le mouvement du joueur. Cela signifie que les tuiles doivent être scannées dans la direction opposée à celle de la saisie du joueur.
Pour résoudre ce problème, nous scannons les tuiles opposées à la direction de déplacement du joueur. Cela garantit que les tuiles ne sont fusionnées que lorsqu'elles sont adjacentes et dans le sens du déplacement. Par exemple, si le joueur descend, nous balayons de la rangée du bas vers la rangée du haut, en fusionnant les tuiles au fur et à mesure.
0 0 2 0 | 0 0 2 2 | Player move (⬇️) 0 2 4 8 | 2 32 4 2 Scan: [32,2] -> [32,2] [4, 2] -> [6, 0] [2, 8] -> [10, 0] [2, 4] -> [0, 6] Result: 0 0 10 0 0 0 6 2 0 0 0 0 32 2 0 0
Pour améliorer l'efficacité du code, nous pouvons éliminez les boucles imbriquées inutiles en utilisant une seule boucle et en bifurquant dans la direction d'entrée du joueur.
for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (board[i][j] == 0) { continue; } switch (input) { case "d": updateBoardDown(board, i, j); break; case "u": updateBoardUp(board, i, j); break; [... other directions ...] } } }
Ce code élimine le besoin de boucles séparées pour chaque direction et simplifie le flux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!