Javascript 如何将对象添加到数组中,但仅当数组的当前元素为0时?

Javascript 如何将对象添加到数组中,但仅当数组的当前元素为0时?,javascript,arrays,object,while-loop,Javascript,Arrays,Object,While Loop,我有下面的代码,当两个类(Player,Game)都实例化时,在Player.gameBoard数组中插入特定数量的玩家。仅当数组元素为0时,我才尝试将Player类添加到数组中。因此,如果将玩家对象插入gameboard[0][0]位置,则其他玩家无法覆盖该玩家。目前,如果选择大量玩家(例如20名),其中一些玩家将被覆盖,而不是所有玩家都出现。所以我认为while循环有问题 var-question=prompt('有多少玩家'); var numOfPlayers=parseInt(问题)

我有下面的代码,当两个类(Player,Game)都实例化时,在Player.gameBoard数组中插入特定数量的玩家。仅当数组元素为0时,我才尝试将Player类添加到数组中。因此,如果将玩家对象插入gameboard[0][0]位置,则其他玩家无法覆盖该玩家。目前,如果选择大量玩家(例如20名),其中一些玩家将被覆盖,而不是所有玩家都出现。所以我认为while循环有问题

var-question=prompt('有多少玩家');
var numOfPlayers=parseInt(问题);
班级游戏{
构造函数(){
这是健康=100;
这个.hammer=false
这把刀是假的;
这把剑是假的;
this.baseballbat=false;
这个值为0;
此.gameBoard=[
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
];
}
}
职业选手{
建造师(id){
这个.id=id;
此位置={
x:Math.floor(Math.random()*8),
y:Math.floor(Math.random()*8)
};
}
}
var play=新游戏();
让player=[];

对于(i=0;i,如果玩家的位置已在棋盘上填满,则需要确保为玩家生成新的坐标

这使得for循环的
代码如下所示:

for (i=0; i <numOfPlayers; i++ ){
   var tempPlayer = new Player(i);
   while (play.gameBoard[tempPlayer.location.y][tempPlayer.location.x]!=0){
      tempPlayer = new Player(i)
    }
   player.push(tempPlayer);
   play.gameBoard[player[i].location.y][player[i].location.x] = player[i];
}

对于(i=0;i而不是在创建每个玩家时为他们随机分配一个
x
/
y
,你应该创建一个所有可能位置的列表,并为每个新玩家实例随机选择一个。你有一个8x8网格。因此有64个可能的位置

如果您为每个玩家:

  • 随便选一个位置
  • 移除该位置
你永远不会有重叠

var位置=[];

对于(var x=0;xyor
while
循环仅在空间为空时执行,但如果空间不为空,则不会为玩家生成新坐标,因此它会被跳过/不会出现在网格上。玩家会得到一个随机的
x
/
y
-如果该空间被其他玩家占用,您希望发生什么?重新运行Math.floor(Math.random()*8)为了了解协调,它不应该在
Player
的构造函数中,而应该在初始化循环中完成(并分配给Player)。从未想过这种方法。非常感谢!