js写的扫雷,连续刷新会出现几次Uncaught TypeError。这是什么原因?

连续刷新会产生如下结果。。。
第一次
image.png
第二次
image.png
第三次
image.png
第四次
image.png
第五次
image.png

看代码index.html

<body>
    <script src="index.js"></script>
</body>

index.js

var game = [];
var size = 10;//游戏界面大小
var boomNum = 10;//炸弹数量
var boomPoint = [];
//用for循环创建游戏界面
for(let i=0;i<size;i++){
    //游戏界面是二维数组
    game.push(
        //Array是数组构造器
        //Array(10)是创建一个长度为10的空数组
        //fill(arg)以参数来填充数组
        Array(size).fill(0)
    );
}
//初始化炸弹位置
function initBoom(){
    //当前放置的炸弹数
    var nowBoomNum = 0;
    //随即坐标(x,y)
    var randomX,randomY;
    //当前炸弹数小于目标炸弹数找随机位置
    while(nowBoomNum<boomNum){
        randomX = parseInt(Math.random()*size);  
        randomY = parseInt(Math.random()*size);
        if(game[randomX][randomY]===0){
            //炸弹标志数字大于8即可
            game[randomX][randomY] = 9;
            nowBoomNum++;
            boomPoint.push([randomX,randomY]);
        } 
    }
}

//初始化炸弹周围的数字
function initDispalyNum(){
    while(boomNum--){
        var [boomX,boomY]=boomPoint[boomNum];
        for(var x = boomX - 1 ; x <= boomX + 1 ; x++){
            if(x<0||x>size){
                continue;
            }
            for(var y=boomY-1;y<=boomY+1;y++){
                if(y<0||y>size-1||game[x][y]===9){
                    continue;
                }
                 game[x][y]++;
            }
        }
    }
}

initBoom();
initDispalyNum();
console.log(game);
console.log(boomPoint);

既能正常显示,又会偶尔报错?!为什么?

阅读 844
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题