在 2048 游戏中,图块只能与其他相同值的图块合并与玩家移动的方向相同。这意味着必须沿着玩家输入的相反方向扫描图块。
为了解决这个问题,我们扫描与玩家移动方向相反的图块。这确保了图块仅在相邻且沿移动方向时才会合并。例如,如果玩家向下移动,我们从底行向顶行扫描,边走边合并图块。
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
为了提高代码效率,我们可以通过使用单个循环并在玩家的输入方向上分支来消除不必要的嵌套循环。
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 ...] } } }
此代码消除了每个方向单独循环的需要,并简化了流程。
以上是如何确保 2048 游戏中的方块正确移动?的详细内容。更多信息请关注PHP中文网其他相关文章!