Example #1
0
        public TicTacToeGame()
        {
            InitializeComponent();

            _game = new TicTacToeRules();
            cmb_players.DataSource = new List <string> {
                "Player vs Player", "Player vs CPU"
            };
        }
Example #2
0
        public void EmptyBoard_GameIsNotOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            var result = rules.IsWinningMove(board);

            Assert.Equal(false, result);
        }
Example #3
0
        public void ReturnFalseWhenThereIsNoWinningColumnWithSameDepth()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(0, 0, 0));
            board.UpdateBoard('X', new Coordinates(1, 0, 0));
            board.UpdateBoard('X', new Coordinates(0, 0, 1));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.False(hasWinner);
        }
Example #4
0
        public void ReturnWinnerWhenThereIsAWinningColumnWithSameDepth(int column, int depth)
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(1, column, depth));
            board.UpdateBoard('X', new Coordinates(0, column, depth));
            board.UpdateBoard('X', new Coordinates(2, column, depth));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #5
0
        public void ReturnWinnerWhenThereIsAWinningRowWithDifferentDepthWithFirstRowAtTheBackLayer()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(0, 0, 2));
            board.UpdateBoard('X', new Coordinates(0, 1, 1));
            board.UpdateBoard('X', new Coordinates(0, 2, 0));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #6
0
        public void ReturnFalseWhenThereIsNoWinningVerticalSecondaryDiagonalLineWithDifferentDepth()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(0, 2, 0));
            board.UpdateBoard('X', new Coordinates(1, 1, 1));
            board.UpdateBoard('X', new Coordinates(2, 0, 1));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.False(hasWinner);
        }
Example #7
0
        public void ReturnTrueWhenThereIsAWinningVerticalSecondaryDiagonalLineFromTop()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(0, 2, 0));
            board.UpdateBoard('X', new Coordinates(1, 1, 1));
            board.UpdateBoard('X', new Coordinates(2, 0, 2));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #8
0
        public void ReturnTrueWhenThereIsAWinningVerticalPrimaryDiagonalLineWithSameDepth()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(0, 0, 1));
            board.UpdateBoard('X', new Coordinates(1, 1, 1));
            board.UpdateBoard('X', new Coordinates(2, 2, 1));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #9
0
        public void ReturnWinnerWhenThereIsAWinningDepth()
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(1, 2, 0));
            board.UpdateBoard('X', new Coordinates(1, 2, 1));
            board.UpdateBoard('X', new Coordinates(1, 2, 2));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #10
0
        public void ReturnWinnerWhenThereIsAWinningRowWithSameDepth(int row, int depth)
        {
            var board = new TicTacToeCPUBoard(3);

            board.UpdateBoard('X', new Coordinates(row, 0, depth));
            board.UpdateBoard('X', new Coordinates(row, 2, depth));
            board.UpdateBoard('X', new Coordinates(row, 1, depth));
            var rules     = new TicTacToeRules();
            var hasWinner = rules.HasWinner(board);

            Assert.True(hasWinner);
        }
Example #11
0
        public void FirstLine_NotFull_GameNotOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            board.Place(0, "X");
            board.Place(2, "X");

            var result = rules.IsWinningMove(board);

            Assert.Equal(false, result);
        }
Example #12
0
        public void FirstColumn_GameIsOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            board.Place(0, "X");
            board.Place(3, "X");
            board.Place(6, "X");

            var result = rules.IsWinningMove(board);

            Assert.Equal(true, result);
        }
Example #13
0
        public void ThirdLine_GameIsOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            board.Place(6, "X");
            board.Place(7, "X");
            board.Place(8, "X");

            var result = rules.IsWinningMove(board);

            Assert.Equal(true, result);
        }
Example #14
0
        public void RightDiagonal_GameIsOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            board.Place(2, "X");
            board.Place(4, "X");
            board.Place(6, "X");

            var result = rules.IsWinningMove(board);

            Assert.Equal(true, result);
        }
    public TicTacToeGameState() : base(GameConstants.TIC_TAC_TOE_PLAYERS)
    {
        board           = new int[GameConstants.TIC_TAC_TOE_SIZE, GameConstants.TIC_TAC_TOE_SIZE];
        possibleActions = new PlayerAction <TicTacToeState> [GameConstants.TIC_TAC_TOE_ACTIONS];
        Mark mark = new Mark();

        mark.x = 0;
        mark.y = 0;
        possibleActions [0] = mark;
        mark   = new Mark();
        mark.x = 1;
        mark.y = 0;
        possibleActions [1] = mark;
        mark   = new Mark();
        mark.x = 2;
        mark.y = 0;
        possibleActions [2] = mark;
        mark   = new Mark();
        mark.x = 0;
        mark.y = 1;
        possibleActions [3] = mark;
        mark   = new Mark();
        mark.x = 1;
        mark.y = 1;
        possibleActions [4] = mark;
        mark   = new Mark();
        mark.x = 2;
        mark.y = 1;
        possibleActions [5] = mark;
        mark   = new Mark();
        mark.x = 0;
        mark.y = 2;
        possibleActions [6] = mark;
        mark   = new Mark();
        mark.x = 1;
        mark.y = 2;
        possibleActions [7] = mark;
        mark   = new Mark();
        mark.x = 2;
        mark.y = 2;
        possibleActions [8] = mark;

        rules = new TicTacToeRules();
    }
Example #16
0
        public void BoradFull_GameIsOver()
        {
            GameRules rules = new TicTacToeRules();
            GameBoard board = new TicTacToeBoard();

            board.Place(0, "X");
            board.Place(1, "X");
            board.Place(2, "0");
            board.Place(3, "0");
            board.Place(4, "0");
            board.Place(5, "X");
            board.Place(6, "X");
            board.Place(7, "X");
            board.Place(8, "0");

            var result = rules.IsDrawMove(board);

            Assert.Equal(true, result);
        }