Get started with boardgame-io CDN

MIT licensed

Online platform: Boardgame.io. Real-time board game hosting and play.

Tags:
  • board games
  • card games
  • tabletop games
  • game engine

Stable version

Copied!

How to start using boardgame-io CDN


const game = {
  setup: function(board, next) {
    this.board = board;
    this.next = next;
    this.turn = 1;

    for (let i = 0; i < 9; i++) {
      if (!this.board.getCell(i).content) {
        this.board.setCell(i, { value: this.turn % 2 === 0 ? "X" : "O" });
      }
    }
  },

  update: function() {
    const cell = this.board.clickedCell;

    if (cell && !cell.content) {
      this.board.setCell(cell.index, { value: this.turn % 2 === 0 ? "X" : "O" });
      this.turn++;
    }

    this.next();
  },

  winCondition: function() {
    return (
      this.checkRows() ||
      this.checkColumns() ||
      this.checkDiagonals()
    );
  },

  checkRows: function() {
    for (let i = 0; i < 3; i++) {
      if (this.board.getRow(i).every((cell) => cell.content)) {
        return true;
      }
    }

    return false;
  },

  checkColumns: function() {
    for (let i = 0; i < 3; i++) {
      if (this.board.getColumn(i).every((cell) => cell.content)) {
        return true;
      }
    }

    return false;
  },

  checkDiagonals: function() {
    return (
      (this.board.getCells([0, 4, 8]).every((cell) => cell.content) &&
        this.turn % 2 !== 0) ||
      (this.board.getCells([2, 4, 6]).every((cell) => cell.content) &&
        this.turn % 2 === 0)
    );
  },

  end: function() {
    if (this.winCondition()) {
      alert(`Player ${this.turn % 2 + 1} wins!`);
    } else if (this.board.emptyCellsCount() === 0) {
      alert("It's a draw!");
    }

    boardgame.runWithActions(game, ["end"]);
  },
};

boardgame.runWithActions(game, ["setup"]);
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!
Copied!

All versions