private bool TryWinningBackwardDiagonal(GameBoardMark[,] gameBoard, out GameBoardState gameBoardState) { int rowLength = gameBoard.GetLength(0); int columnLength = gameBoard.GetLength(1); var winningBackwardDiagonal = true; int rowIndex = 0, columnIndex = 0; GameBoardMark matchingMark = gameBoard[rowIndex, columnIndex]; for (; rowIndex < rowLength && columnIndex < columnLength; rowIndex++, columnIndex++) { if (gameBoard[rowIndex, columnIndex] != matchingMark) { winningBackwardDiagonal = false; break; } } if (matchingMark == GameBoardMark.Empty) { gameBoardState = GameBoardState.Active; return(false); } gameBoardState = winningBackwardDiagonal && matchingMark == GameBoardMark.X ? GameBoardState.XWinner : GameBoardState.OWinner; return(winningBackwardDiagonal); }
public void IsValidMove_WhenMoveLocationOccupied_ReturnsFalse(GameBoardMark gameBoardMark) { bool actual = systemUnderTest.IsValidMove(new Move(Player.X, 0, 0), GameState.NewGameXMove, new[, ] { { gameBoardMark } }); Assert.IsFalse(actual); }
public void SetUp() { board = new GameBoardMark[0, 0]; gameBoardMock = Substitute.For <IGameBoard>(); gameBoardMock.Board.Returns(board); moveValidatorMock = Substitute.For <IMoveValidator>(); SetUpIsValidMove(true); gameBoardAnalyzerMock = Substitute.For <IGameBoardAnalyzer>(); gameBoardAnalyzerMock.AnalyzeGameBoard(board).Returns(GameBoardState.Active); systemUnderTest = NewGameEngine(gameBoardMock, moveValidatorMock, gameBoardAnalyzerMock); move = new Move(Player.X, 0, 0); }
private string GetDrawImage(GameBoardMark gameBoardMark) { if (gameBoardMark == GameBoardMark.Empty) { return(" "); } if (gameBoardMark == GameBoardMark.X) { return("X"); } if (gameBoardMark == GameBoardMark.O) { return("O"); } throw new ArgumentOutOfRangeException(); }
private void DrawGameBoardMark(Button button, int row, int column) { GameBoardMark gameBoardMark = gameEngine.GameBoard[row, column]; if (gameBoardMark == GameBoardMark.Empty) { SetText(button, ""); } else if (gameBoardMark == GameBoardMark.X) { SetText(button, "X"); SetEnabled(button, false); } else if (gameBoardMark == GameBoardMark.O) { SetText(button, "O"); SetEnabled(button, false); } else { throw new ArgumentOutOfRangeException(); } }