2048 游戏的正确图块移动
在尝试创建流行游戏 2048 的命令行版本时,您可能会遇到困难
图块合并问题
可能出现的一个问题是当一个图块移过具有相同值的另一个图块时。例如,对于以下棋盘:
[2][2][4]
并且玩家输入“->”,所需的结果应该是:
[0][4][4]
但是,您当前的方法可能无法正确处理这种情况,可能会导致 4 的合并以及不期望的结果:
[0][0][8]
解决方案
要解决此问题,您的图块合并逻辑应考虑玩家移动的方向。沿移动的相反方向扫描图块,优先合并该方向的图块。这可以确保您避免合并在上一次迭代中已经合并的图块。
例如,在上面的场景中,从最右边的列开始扫描并向左移动,合并您遇到的任何 4一直走到最左边的列。
代码优化
您的代码包含跨不同移动情况的多个循环重复项。为了提高效率,请考虑将这些循环重构为处理所有情况的单个循环:
for i := 1; i < height; i { for j := 0; j < width; j { if board[i][j] == 0 { continue } switch input { case "d": updateBoardDown(board, i, j) case "u": updateBoardUp(board, i, j) [...] } } }
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3