Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不一致的';矿山';加上我的扫雷游戏,我知道什么错误,但无法修复_Javascript - Fatal编程技术网

Javascript 不一致的';矿山';加上我的扫雷游戏,我知道什么错误,但无法修复

Javascript 不一致的';矿山';加上我的扫雷游戏,我知道什么错误,但无法修复,javascript,Javascript,我试图根据一个全局参数设置地雷编号,在本例中为4,但有时渲染3,有时渲染4, 我最好的猜测是,地雷被放置在彼此的顶部,因为它应该在随机的位置,试图修复它,但没有成功 职能: function addBombs(board) { var coords = [] for (var i = 0; i < gLevel.MINES; i++) { var randCol = getRandomIntInclusive(0, board.length - 1);

我试图根据一个全局参数设置地雷编号,在本例中为4,但有时渲染3,有时渲染4, 我最好的猜测是,地雷被放置在彼此的顶部,因为它应该在随机的位置,试图修复它,但没有成功

职能:

function addBombs(board) {
    var coords = []
    for (var i = 0; i < gLevel.MINES; i++) {
        var randCol = getRandomIntInclusive(0, board.length - 1);
        var randRow = getRandomIntInclusive(0, board[0].length - 1);
        var cell = board[randRow][randCol]
        if(cell.isMine) continue;

        coords.push(cell)
        cell.isMine = true
    }

}
功能添加炸弹(板){
var coords=[]
对于(var i=0;i
之所以发生这种情况,是因为当您检测到随机单元中已经有地雷时,您正在继续循环。循环变量仍然会增加,并且您的条件不会得到足够的满足,无法将不同的矿井放置到其他地方。您可以这样做:

功能添加炸弹(板){
var coords=[]
var i=0;
而(我}
之所以发生这种情况,是因为当您检测到随机单元中已经有地雷时,您正在继续循环。循环变量仍然会增加,并且您的条件不会得到足够的满足,无法将不同的矿井放置到其他地方。您可以这样做:

功能添加炸弹(板){
var coords=[]
var i=0;
而(我}
问题在于迭代仍在进行。我加1
//Continue,表示它将中断当前迭代并转到下一个迭代
如果(cell.isMine)继续;
//如果不希望索引前进,请更改为
if(cell.isMine){
我--
持续

}
问题在于迭代仍在进行。我加1
//Continue,表示它将中断当前迭代并转到下一个迭代
如果(cell.isMine)继续;
//如果不希望索引前进,请更改为
if(cell.isMine){
我--
持续

}
解决这个问题最简单但也最难看的方法是减少
i
变量

功能添加炸弹(板){
var coords=[]
对于(var i=0;i
我建议您使用更优雅的解决方案。。。尝试将
for循环
更改为
while循环

功能添加炸弹(板){
var coords=[]
while(坐标长度
解决这个问题最简单但也最难看的方法是减少
i
变量

功能添加炸弹(板){
var coords=[]
对于(var i=0;i
我建议您使用更优雅的解决方案。。。尝试将
for循环
更改为
while循环

功能添加炸弹(板){
var coords=[]
while(坐标长度
我认为您应该将放置地雷的位置存储在,因此,如果再次随机生成同一个位置,则需要重新生成另一个位置。因为当您创建的随机单元格上实际存在地雷时,您仍在继续。是的,但使用“中断”或“返回”无法修复eitherkirnav是否需要EXPLAME,如果您愿意,如果随机选择的单元格为INE,生成另一个随机单元格,直到其唯一,而不是继续创建地雷。我认为您应该将放置地雷的位置存储在某个位置,因此,如果再次随机生成同一个位置,则需要重新生成另一个位置。因为当您创建的随机单元格上实际存在地雷时,您仍在继续。是的,但使用“中断”或“返回”无法修复eitherkirnav是否需要EXPLAME,如果您愿意,如果随机选择的单元格为INE,生成另一个随机单元,直到它是唯一的,而不是在不创建地雷的情况下继续。