Exemplo n.º 1
0
        public bool Select(TicTacToeEnum ticTacToeEnum)
        {
            if (CurrentValue != TicTacToeEnum._)
            {
                return(false);
            }

            CurrentValue = ticTacToeEnum;
            return(true);
        }
Exemplo n.º 2
0
 private TicTacToeEnum CharToEnum(char player)
 {
     if (player == 'X')
     {
         gameState = TicTacToeEnum.X_WON;
     }
     else
     {
         gameState = TicTacToeEnum.O_WON;
     }
     return(gameState);
 }
Exemplo n.º 3
0
 private void Reset(char initialTurn)
 {
     this.turn = initialTurn;
     grid      = new char[nRows, nColumns];
     for (int i = 0; i < nRows; i++)
     {
         for (int j = 0; j < nColumns; j++)
         {
             grid[i, j] = ' ';
         }
     }
     nMarks    = 0;
     gameState = TicTacToeEnum.IN_PROGRESS;
 }
        public bool CheckWinner(TicTacToeEnum currentTurn, GameSpace[,] spaces)
        {
            if (currentTurn == TicTacToeEnum._)
            {
                return(false);
            }

            if (spaces[0, 0].CurrentValue == currentTurn && spaces[1, 1].CurrentValue == currentTurn && spaces[2, 2].CurrentValue == currentTurn)
            {
                return(true);
            }

            if (spaces[0, 2].CurrentValue == currentTurn && spaces[1, 1].CurrentValue == currentTurn && spaces[2, 0].CurrentValue == currentTurn)
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 5
0
        private void CheckForWinner(TicTacToeEnum currentTurn)
        {
            var horizontalWinner = _ticTacToeHorizontalChecker.CheckWinner(currentTurn, Spaces);
            var verticalWinner   = _ticTacToeVertcalChecker.CheckWinner(currentTurn, Spaces);
            var crossWinner      = _ticTacToeDiagonalChecker.CheckWinner(currentTurn, Spaces);

            if (horizontalWinner || verticalWinner || crossWinner)
            {
                if (CurrentTicTacToeTurn == TicTacToeEnum.O)
                {
                    CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.OWins;
                }
                else
                {
                    CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.XWins;
                }
            }

            TurnCount++;
            if (TurnCount == 9)
            {
                CurrentTicTacToeGameStatus = TicTakToeGameStatusEnum.Draw;
            }
        }
Exemplo n.º 6
0
 public GameSpace()
 {
     CurrentValue = TicTacToeEnum._;
 }
Exemplo n.º 7
0
        private TicTacToeEnum findWinner()
        {
            int winC = 0;

            for (int i = 0; i < nRows; i++)
            {
                for (int j = 0; j < nColumns; j++)
                {
                    //checking horizontal win
                    for (int k = 0; k < num_to_win; k++)
                    {
                        if (j + k < nColumns)
                        {
                            if (grid[i, j + k] == turn)
                            {
                                winC++;
                                if (winC == num_to_win)
                                {
                                    CharToEnum(turn);
                                    return(gameState);
                                }
                            }
                            else
                            {
                                winC = 0;
                            }
                        }
                    }
                    winC = 0;

                    //check vertical win
                    for (int k = 0; k < num_to_win; k++)
                    {
                        if (i + k < nRows)
                        {
                            if (grid[i + k, j] == turn)
                            {
                                winC++;
                                if (winC == num_to_win)
                                {
                                    CharToEnum(turn);
                                    return(gameState);
                                }
                            }
                            else
                            {
                                winC = 0;
                            }
                        }
                    }
                    winC = 0;

                    //check for bottom right diagonal win
                    for (int k = 0; k < num_to_win; k++)
                    {
                        if (i + k < nRows && j + k < nColumns)
                        {
                            if (grid[i + k, j + k] == turn)
                            {
                                winC++;
                                if (winC == num_to_win)
                                {
                                    CharToEnum(turn);
                                    return(gameState);
                                }
                            }
                            else
                            {
                                winC = 0;
                            }
                        }
                    }
                    winC = 0;

                    //check for bottom left diagonal win
                    for (int k = 0; k < num_to_win; k++)
                    {
                        if (i - k >= 0 && j + k < nColumns)
                        {
                            if (grid[i - k, j + k] == turn)
                            {
                                winC++;
                                if (winC == num_to_win)
                                {
                                    CharToEnum(turn);
                                    return(gameState);
                                }
                            }
                            else
                            {
                                winC = 0;
                            }
                        }
                    }
                    winC = 0;
                }
            }

            if (nRows * nColumns == nMarks)
            {
                gameState = TicTacToeEnum.DRAW;
            }

            return(gameState);
        }