gpt4 book ai didi

Javascript 扫雷游戏,无法增加正确的单元格

转载 作者:行者123 更新时间:2023-11-30 08:34:50 24 4
gpt4 key购买 nike

我正在用 Javascript 编写一个简单的扫雷游戏。我有一个二维数组(称为“mineInput”)来保存所有地雷的位置。我有一个单独的数组“result”,它记录了与每个单元格相邻的地雷数量。

我有 2 个嵌套的 for 循环来遍历“result”中的每一行和每一列,并检查“mineInput”中的每笔销售。如果有地雷,我会使用 result[i][ 增加地雷计数j]++;。但是我注意到奇怪的行为,整个列都递增,而不是只有一个单元格。

这个:

[ [ 0, 0, 0 ],
[ 0, 0, 0 ],
[ 0, 0, 0 ] ]

后跟:result[i][j]++;

变成:

[ [ 0, 1, 0 ],
[ 0, 1, 0 ],
[ 0, 1, 0 ] ]

代替:

[ [ 0, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 0 ] ]

这是完整的代码(请原谅控制台日志的数量过多)。 https://repl.it/BIYH/2

知道哪里出了问题吗?

最佳答案

问题出在您初始化数组的代码早期

var result = [];
var newRow = [];
for (var i = 0; i < rowCount; i++) {
newRow.push(0);
}
for (var i = 0; i < rowCount; i++) {
result.push(newRow);
}

您只创建了一个 newRow 数组并将其添加到您的 result 数组中 3 次。所以你可以这样显示:

newRow == [0,0,0]
result == [newRow, newRow, newRow]

当您递增时,您将添加到 newRow 数组中的一个单元格,它给出

newRow == [0,1,0]
result == [newRow, newRow, newRow] therefore
result = [[0,1,0],[0,1,0],[0,1,0]]

你可以这样解决:

var result = [];
for (var i = 0; i < rowCount; i++) {
// create a new array for each row
var newRow = [];
for (var i = 0; i < rowCount; i++) {
newRow.push(0);
}

result.push(newRow);
}

关于Javascript 扫雷游戏,无法增加正确的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com