Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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,我在玩游戏《战舰》,游戏板由10 x 10的方阵组成: const board = [       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],       [0,0,0,0,0,0,0,0,0,0],    

我在玩游戏《战舰》,游戏板由10 x 10的方阵组成:

const board = [
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0.0.0.0,0,0,0,0,0,0]
    ]

我想在棋盘上填上船,以数字2的形式,这意味着船还活着,并且已经改变了游戏,例如-1,以理解船被击中。我能够在初始化过程中使用随机位置填充游戏板,但问题是船彼此接触,你可以认为开始时船的位置彼此不接触。它们之间的距离至少是一个空笼子的距离。

这是示例代码。也许这对你有帮助

const board = [
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0],
      [0,0,0,0,0,0,0,0,0,0]
    ]

    xMax=9;
    yMax=9   

    function placeBoat(numberOfBoat, fillWith){
        boatPlaced=0;
        while(boatPlaced < numberOfBoat){
            var randX=Math.floor(Math.random() * 10);
            var randY=Math.floor(Math.random() * 10);
            ok=true;
            if(randX!=0 && randY!=0){
              if(board[randX-1][randY]!=0){
                ok=false;
              }
              if(board[randX-1][randY-1]!=0){
                ok=false;
              }
              if(board[randX][randY-1]!=0){
                ok=false;
              }
            }
            else if(randX!=0){
              if(board[randX-1][randY]!=0){
                ok=false;
              }
            }
            else{
              if(board[randX][randY-1]!=0){
                ok=false;
              }
            }

            if(randX!=xMax && randY!=yMax){
              if(board[randX+1][randY]!=0){
                ok=false;
              }
              if(board[randX+1][randY+1]!=0){
                ok=false;
              }
              if(board[randX][randY+1]!=0){
                ok=false;
              }
            }
            else if(randY!=yMax){
               if(board[randX][randY+1]!=0){
                ok=false;
              }
            }
            else{
               if(board[randX][randY+1]!=0){
                ok=false;
              }
            }
            if(randX!=0 && randY!=yMax){
              if(board[randX-1][randY+1]!=0){
                ok=false;
              }
            }
            if(randX!=xMax && randY!=0){
              if(board[randX+1][randY-1]!=0){
                ok=false;
              }
            }
            if(board[randX][randY]!=0){
              ok=false;
            }


            if(ok){
              board[randX][randY]=fillWith;
              boatPlaced++;
            }
        }
    }  
    placeBoat(1,'L');
    placeBoat(1,'I');
    placeBoat(2,'.');
const board=[
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]
]
xMax=9;
yMax=9
功能放置船(船号,填充){
船位=0;
while(艇位<艇号){
var randX=Math.floor(Math.random()*10);
var randY=Math.floor(Math.random()*10);
ok=正确;
如果(randX!=0&&randY!=0){
如果(板[randX-1][randY]!=0){
ok=假;
}
如果(板[randX-1][randY-1]!=0){
ok=假;
}
如果(板[randX][randY-1]!=0){
ok=假;
}
}
else如果(randX!=0){
如果(板[randX-1][randY]!=0){
ok=假;
}
}
否则{
如果(板[randX][randY-1]!=0){
ok=假;
}
}
if(randX!=xMax&&randY!=yMax){
如果(电路板[randX+1][randY]!=0){
ok=假;
}
如果(电路板[randX+1][randY+1]!=0){
ok=假;
}
如果(电路板[randX][randY+1]!=0){
ok=假;
}
}
else if(randY!=yMax){
如果(电路板[randX][randY+1]!=0){
ok=假;
}
}
否则{
如果(电路板[randX][randY+1]!=0){
ok=假;
}
}
if(randX!=0&&randY!=yMax){
如果(电路板[randX-1][randY+1]!=0){
ok=假;
}
}
如果(randX!=xMax&&randY!=0){
如果(电路板[randX+1][randY-1]!=0){
ok=假;
}
}
如果(董事会[randX][randY]!=0){
ok=假;
}
如果(确定){
董事会[randX][randY]=fillWith;
boatPlaced++;
}
}
}  
救生艇(1,'L');
安置船(1,'I');
救生艇(2,’);

请从这里获得帮助,以获取范围之间的随机数。您可以通过传递数组的最小索引和最大索引来获得随机索引数,您可以通过随机索引填充它,或者如果您必须填充所有位置,则使用此函数通过所有索引循环,并使用-1和2之间的随机数初始化值。您可以发布您的尝试吗?,这可能非常有用。开始时你想在船上放多少条船?@chatarsinghone我船一我船二点船