在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中文網其他相關文章!