Maison >développement back-end >Golang >Comment assurer le bon mouvement des tuiles dans un jeu 2048 ?

Comment assurer le bon mouvement des tuiles dans un jeu 2048 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 15:03:02381parcourir

How to Ensure Proper Tile Movement in a 2048 Game?

Mouvement correct des tuiles pour un jeu de 2048

Comprendre le problème

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.

Solution

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

Optimisation du code

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn