public ConsoleGameBuilder(IConsoleUI ui) : base(ui) { ui.DisplayStartScreen(); bool startGame = false; while (startGame == false) { startGame = ui.DisplayReadyScreen(); } List <IGamePlayer> players = ui.DisplayEnterPlayersScreen(); NoughtCrossToken token = ui.DisplayEnterPlayerOneTokenScreen(); IGameSquare[][] squares = new GameSquare[3][]; for (int i = 0; i < 3; i++) { squares[i] = new GameSquare[3]; for (int j = 0; j < 3; j++) { squares[i][j] = new GameSquare(); } } IGameBoard board = new GameBoard(squares); _gameEngine = new GameEngine(players, board, players[0].Id, token, new GameVictoryCalculator(GameWinStates.GetStates())); }
private GameSquare[,] FormatGameState(IGameSquare[][] gameState, NoughtCrossToken token) { var maxLength = 0; for (int i = 0; i < 3; i++) { if (gameState[i].Length > maxLength) { maxLength = gameState[i].Length; } } var formattedGameState = new GameSquare[gameState.Length, maxLength]; for (int i = 0; i < gameState.Length; i++) { for (int j = 0; j < gameState[i].Length; j++) { formattedGameState[i, j] = new GameSquare(); if (gameState[i][j].Value == token) { formattedGameState[i, j].Value = NoughtCrossToken.X; } } for (int j = gameState[i].Length; j < maxLength; j++) { formattedGameState[i, j] = new GameSquare(); } } return(formattedGameState); }
public void ThrowErrorOnAlreadySetBoardSquare() { int x = 0; int y = 0; NoughtCrossToken value = NoughtCrossToken.X; _board = new GameBoard(_squares); _board.SetSquare(x, y, value); value = NoughtCrossToken.O; _board.SetSquare(x, y, value); }
public void SetAndGetBoardSquare2by0() { int x = 2; int y = 0; NoughtCrossToken value = NoughtCrossToken.X; _board = new GameBoard(_squares); _board.SetSquare(x, y, value); var setValue = _board.GetSquare(x, y); Assert.AreEqual(value, setValue); }
public void SetSquare(int x, int y, NoughtCrossToken value) { try { _squares[x][y].Value = value; } catch (Exception e) { if (e.GetType() == typeof(InvalidOperationException)) { throw new InvalidOperationException("Cannot set square: " + e.Message); } } }
public GameEngine(List <IGamePlayer> players, IGameBoard board, Guid playerOneId, NoughtCrossToken playerOneToken, IGameVictoryCalculator victoryCalculator) : base(players, board, playerOneId, playerOneToken) { _victoryCalculator = victoryCalculator; }
public BaseGameEngine(List <IGamePlayer> players, IGameBoard board, Guid playerOneId, NoughtCrossToken playerOneToken) { _players = players; _board = board; if (_players.Count != 2) { throw new ArgumentException("Invalid number of players"); } if (board.GetBoard().Length != 3 || board.GetBoard()[0].Length != 3 || board.GetBoard()[1].Length != 3 || board.GetBoard()[2].Length != 3) { throw new ArgumentException("Invalid board size"); } if (_players.Find(e => e.Id == playerOneId) == null) { throw new ArgumentException("Player One not present"); } foreach (var player in _players) { if (player.Id == playerOneId) { player.SetPlayerToken(playerOneToken); } else { if (playerOneToken == NoughtCrossToken.X) { player.SetPlayerToken(NoughtCrossToken.O); } else { player.SetPlayerToken(NoughtCrossToken.X); } } } _gameTurn = 0; _winner = null; _playerTurn = playerOneId; }