Javascript扫雷游戏,可以';t增加正确的单元格
我正在用Javascript编写一个简单的扫雷游戏。我有一个二维数组(称为“mineInput”)来保存所有地雷的位置。我有一个单独的数组“result”,它记录了每个单元格附近的地雷数量 我有两个嵌套的for循环来迭代“result”中的每一行和每一列,并检查“mineInput”中的每一个sell。如果有地雷,我用Javascript扫雷游戏,可以';t增加正确的单元格,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我正在用Javascript编写一个简单的扫雷游戏。我有一个二维数组(称为“mineInput”)来保存所有地雷的位置。我有一个单独的数组“result”,它记录了每个单元格附近的地雷数量 我有两个嵌套的for循环来迭代“result”中的每一行和每一列,并检查“mineInput”中的每一个sell。如果有地雷,我用result[I][j]++;增加地雷计数。但是我注意到了奇怪的行为,整个列都增加了,而不是只增加一个单元格 这: 后跟:result[i][j]++; 变成: [ [ 0, 1,
result[I][j]++;
增加地雷计数。但是我注意到了奇怪的行为,整个列都增加了,而不是只增加一个单元格
这:
后跟:result[i][j]++;
变成:
[ [ 0, 1, 0 ],
[ 0, 1, 0 ],
[ 0, 1, 0 ] ]
而不是:
[ [ 0, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 0 ] ]
这是完整的代码(请原谅控制台日志数量太多)。
知道哪里出了问题吗?问题是在代码的早期初始化数组
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
数组中的一个单元格,该数组给出
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);
}
var结果=[];
对于(变量i=0;i
问题出现在代码的早期,您需要初始化阵列
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
数组中的一个单元格,该数组给出
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);
}
var结果=[];
对于(变量i=0;i
我想问题出在以下代码中:
var result = [];
var newRow = [];
for (var i = 0; i < rowCount; i++) {
newRow.push(0);
}
for (var i = 0; i < rowCount; i++) {
result.push(newRow);
}
数组在javascript中是一个对象,对象总是通过引用传递。我想问题出在下面的代码中:
var result = [];
var newRow = [];
for (var i = 0; i < rowCount; i++) {
newRow.push(0);
}
for (var i = 0; i < rowCount; i++) {
result.push(newRow);
}
数组在javascript中是一个对象,对象总是通过引用传递。我已经更正了您的帖子,将此游戏称为“雷击机”改为“扫雷机”。雷击机是3D探索和构建素材游戏;扫雷机是2D查找隐藏的地雷游戏,我很确定您一定会在这里询问。您试过了吗(结果[i][j])++;?我已经更正了你的帖子,把这个游戏称为“雷霆战舰”改为“扫雷舰”。雷霆战舰是一款3D探索和构建的东西游戏;扫雷舰是一款2D寻找隐藏地雷的游戏,我很确定你想问一下。你试过了吗(结果[i][j])++我知道那是件愚蠢的事。我现在觉得很愚蠢。谢谢。我知道那是件愚蠢的事。我现在觉得很愚蠢。谢谢