Как рандомизировать символы "X" и "O" для первого игрока в игре в крестики-нолики, используя параметр по умолчанию? - PullRequest
1 голос
/ 03 мая 2019

В модуле Node.js - GameModule.js, который экспортирует класс с именем «Game» и описывает состояние игры, начальный игрок не статичен, его следует установить во время создания Game-Object.

Таким образом, начальный игрок должен быть произвольно установлен на «X» или «O» в каждом начале Игры, используя параметр по умолчанию в Конструкторе.

Это простая игра в крестики-нолики, которая позволяет играть в игру между двумя пользователями в двух разных браузерах.

Я могу присвоить начальному игроку в server.js значение «X» или «O», но не могу понять, как это рандомизировать в игровом модуле, используя параметр по умолчанию в конструкторе.

Вот часть GameModule.js, где значение firstPlayer должно быть случайным образом присвоено "X" или "O":

    class Game {
      constructor(el = "X") {
        this.firstPlayer = el;
        this.currentPlayer = "";
        this.gameField = [
          ["", "", ""],
          ["", "", ""],
          ["", "", ""]
        ];
        this.result = "";
      }
    }

А вот часть server.js, которая создает экземпляр Game-Object:

    let gameModule = require("./GameModule.js");
    let myGame = new gameModule.Game();

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Просто используйте Math.random () . Это дает случайное число между 0 и 1, и поскольку мы хотим, чтобы X и O были равновероятными , мы можем отметить порог в 0,5:

this.firstPlayer = Math.random() > 0.5 ? "X" : "O";

Демо-версия:

const randomPlayer = () => Math.random() > 0.5 ? "X" : "O";

for(let i = 0;i < 10;i++) {
  console.log(randomPlayer());
}
0 голосов
/ 03 мая 2019

Используйте Math.random для генерации случайного числа, затем присваивайте x или o с вероятностью 50% каждый

class Game {
  constructor() {
    this.firstPlayer = Math.random() < 0.5 ? 'X' : 'O';
    this.currentPlayer = "";
    this.gameField = [
      ["", "", ""],
      ["", "", ""],
      ["", "", ""]
    ];
    this.result = "";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...