Exemplo n.º 1
0
        public void PlayerUnbeatablePlaysFirstAndMarksCenter()
        {
            Board board = CreateBoard();

            PlayerUnbeatable playerUnbeatable = CreatePlayerUnbeatable();

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(1, 1));
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            IConsole console = new GameConsole();

            IPlayer playerReal       = new PlayerReal(Marker.X, console);
            IPlayer playerUnbeatable = new PlayerUnbeatable(Marker.O);

            const int boardSize = 3;

            Game game = new Game(boardSize, playerReal, playerUnbeatable, console);

            game.GameLoop();
        }
Exemplo n.º 3
0
        public void PlayerUnbeatablePlaysSecondWithCenterEmptyAndMarksCenter()
        {
            Board board = CreateBoard();

            const Marker marker = Marker.X;

            board.MarkBoard(CreatePlay(1, 0, marker));

            PlayerUnbeatable playerUnbeatable = CreatePlayerUnbeatable();

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(1, 1));
        }
Exemplo n.º 4
0
        public void WinInDiagonalUpToDownRightToLeft()
        {
            Board board = CreateBoard();

            const Marker marker = Marker.O;

            board.MarkBoard(CreatePlay(2, 0, marker));
            board.MarkBoard(CreatePlay(1, 1, marker));

            PlayerUnbeatable playerUnbeatable = CreatePlayerUnbeatable();

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(0, 2));
        }
Exemplo n.º 5
0
        public void AvoidDefeatInDiagonalLineUpToDownLeftToRight()
        {
            Board board = CreateBoard();

            const Marker marker = Marker.X;

            board.MarkBoard(CreatePlay(0, 0, marker));
            board.MarkBoard(CreatePlay(1, 1, marker));

            PlayerUnbeatable playerUnbeatable = CreatePlayerUnbeatable();

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(2, 2));
        }
Exemplo n.º 6
0
        public void AvoidDefeatInHorizontalLine(int horizontalLine)
        {
            Board board = CreateBoard();

            const Marker marker = Marker.X;

            board.MarkBoard(CreatePlay(0, horizontalLine, marker));
            board.MarkBoard(CreatePlay(1, horizontalLine, marker));

            if (horizontalLine != 1)
            {
                board.MarkBoard(CreatePlay(1, 1, Marker.O));
            }

            PlayerUnbeatable playerUnbeatable = new PlayerUnbeatable(Marker.O);

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(2, horizontalLine));
        }
Exemplo n.º 7
0
        public void AvoidDefeatInVerticalLine(int verticalLine)
        {
            Board board = CreateBoard();

            const Marker marker = Marker.X;

            board.MarkBoard(CreatePlay(verticalLine, 0, marker));
            board.MarkBoard(CreatePlay(verticalLine, 1, marker));

            if (verticalLine != 1)
            {
                board.MarkBoard(CreatePlay(1, 1, Marker.O));
            }

            PlayerUnbeatable playerUnbeatable = CreatePlayerUnbeatable();

            board.MarkBoard(playerUnbeatable.Play(board));

            Assert.AreEqual(playerUnbeatable.Marker, board.GetMarkAtPosition(verticalLine, 2));
        }