In lib/model.ts
, we will create the model for our game. The model should contain the game state.
We start with the player. The game is played by two players. Each field of the grid contains the symbol of a player or no symbol. We will model the grid as a two dimensional array, where each field can contain a player:
export type Grid = Player[][];
A player is either Player1
, Player2
, or no player:
export enum Player { Player1 = 1, Player2 = -1, None = 0 }
We have given these members values so we can easily get the opponent of a player:
export function getOpponent(player: Player): Player { return -player; }
We create a type to represent an index of the grid. Since the grid is two dimensional, such an index requires two values:
export type Index = [number, number];
We can use this type to create two functions that get or update one field of the grid. We use functional programming in this chapter, so we will not...