private void ValidateTileEmpty(SmallTileInformation tile) { if (tile.Value != TileValue.Empty) { throw new TileNotEmptyException(); } }
public void GetAllLinesOfBoard_ValidSmallTileInformation_ShouldReturnAllLines() { // arrange var board = new SmallTileInformation[3][]; for (var x = 0; x < 3; x++) { board[x] = new SmallTileInformation[3]; for (var y = 0; y < 3; y++) { board[x][y] = new SmallTileInformation { BoardPosition = new Position(0, 0), Value = TileValue.Empty, }; } } // act IEnumerable <IEnumerable <TileInformation> > result = BoardExtensions.GetAllLinesOfBoard(board); // assert result.Should().HaveCount(8); }
public MoveResult Move(Move m) { try { ValidateNoWinner(); ValidateIsPlayersMove(m.Player); ValidateValidBoardToPlay(m.BoardPosition); SmallBoardInformation board = GetBoard(m.BoardPosition); SmallTileInformation tile = GetTile(board, m.TilePosition); ValidateTileEmpty(tile); tile.Value = m.Player.ToTileValue(); Winner winner = board.Tiles.GetWinner(m.Player); if (winner != Winner.None) { board.Value = winner.ToTileValue(); _winner = _board.GetWinner(m.Player); } // if there is no exception until here the move was valid _moves.Add(m); ChangeCurrentPlayer(); return(new MoveResult { IsValid = true, Move = m, MoveFinishedBoard = winner != Winner.None, MoveFinishedGame = _winner != Winner.None, }); } catch (InvalidMoveException e) { return(new MoveResult { IsValid = false, Move = m, MoveFinishedBoard = false, MoveFinishedGame = false, InvalidReason = e.Message, }); } }
private SmallTileInformation[][] GetEmptyBoard() { var emptyBoard = new SmallTileInformation[3][]; for (var x = 0; x < 3; x++) { emptyBoard[x] = new SmallTileInformation[3]; for (var y = 0; y < 3; y++) { emptyBoard[x][y] = new SmallTileInformation { Value = TileValue.Empty, }; } } return(emptyBoard); }
private SmallTileInformation[][] GenerateTiles(int boardX, int boardY) { var tiles = new SmallTileInformation[3][]; for (var x = 0; x < 3; x++) { tiles[x] = new SmallTileInformation[3]; for (var y = 0; y < 3; y++) { tiles[x][y] = new SmallTileInformation { BoardPosition = new Position(boardX, boardY), Value = TileValue.Empty, }; } } return(tiles); }