我正在尝试使用javascript中的oop制作桌游。 (非常糟糕)。 想法是要有一个多维数组,其中的对象由值或id表示。 我已经制作了一个多维数组作为董事会。 我已经为玩家创建了一个对象作为示例。 我似乎找不到办法:
createPlayers() {
for (let i = 0; i < players; i++) {
let players = [new Player("Player 1", 1),
new Player("Player 2", 2)
];
players.push(m);
}
}
我已经尝试过在for循环中使用push(),但是我不确定这是正确的还是接近的地方。
这就是我的作品:
class Board {
constructor(rows, cols) {
let Board = [];
for (let i = 0; i < rows; i++) {
Board[i] = [];
for (let j = 0; j < cols; j++) {
Board[i][j] = 0;
}
}
return Board
}
}
let m = new Board(10, 10);
class Player {
constructor(name, id) {
this.name = name;
this.id = id;
}
}
let players = [new Player("Player 1", 1),
new Player("Player 2", 2)
];
我已经了解了-没问题,当我console.table(m)时,数组显示为默认值0
目标是使对象(玩家)在数组中表示为数字1和2,并位于随机位置。
我可以使用
得到一个随机的1。board[i][j] = (Math.random() * 2 | 0) + 0;
在板的for循环中。但这在目前阶段是毫无用处的,因为我似乎无法弄清楚如何更新数组。 任何建议将不胜感激!
答案 0 :(得分:0)
class Board {
constructor(rows, cols) {
let Board = [];
for (let i = 0; i < rows; i++) {
Board[i] = [];
for (let j = 0; j < cols; j++) {
Board[i][j] = 0;
}
}
return Board
}
}
let totalRows = 10;
let totalCols = 10;
let m = new Board(totalRows, totalCols);
class Player {
constructor(name, id) {
this.name = name;
this.id = id;
}
}
let players = [
new Player("Player 1", 1),
new Player("Player 2", 2)
];
players.forEach(function(player){
let row, col, notInserted = true;
while (notInserted) {
row = Math.floor(Math.random() * 100) % totalRows;
col = Math.floor(Math.random() * 100) % totalCols;
if (m[row][col] === 0) {
m[row][col] = player.id;
notInserted = false;
}
}
});
console.log(m);
创建了棋盘和玩家之后,循环遍历每个玩家。对于每个玩家,在棋盘边界内获取一个随机的行和列号。如果板上的位置是0
,请在此处放置玩家。如果不是0
,请重复随机数逻辑以获取另一位置,并继续直到找到0
。