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 中国語 Web サイトの他の関連記事を参照してください。