Javascript 如何用随机位置填充数组
我在玩游戏《战舰》,游戏板由10 x 10的方阵组成: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],
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我船一我船二点船