Как обновить многомерный массив с помощью объекта на настольную игру - PullRequest
0 голосов

Я пытаюсь сделать настольную игру, используя oop в javascript.(очень плохо знаком с опа).Идея состоит в том, чтобы иметь многомерный массив с объектами, представленными значением или идентификатором.Я сделал многомерный массив для доски.В качестве примера я создал объект для игроков.Я не могу найти способ:

  1. добавить игрока (и другие объекты) на саму доску
  2. добавить игрока (и другие объекты) в случайном местена доске
createPlayers() {
  for (let i = 0; i < players; i++) {
    let players = [new Player("Player 1", 1),
      new Player("Player 2", 2)
    ];
    players.push(m);
  }
}

Я пытался использовать push () в цикле for, но я не уверен, правильно ли это или где-то близко.

вот чтоу меня это работает:

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 длядоска.но это довольно бесполезно на данном этапе, так как я не могу понять, как обновить массив.Любые предложения будут оценены!

1 Ответ

0 голосов
/ 21 мая 2019

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...