Ejemplo n.º 1
0
class BoardViewTests(TestCase):
    EMPTY_BOARD = [[EMPTY_INNER_BOARD, EMPTY_INNER_BOARD, EMPTY_INNER_BOARD],
                   [EMPTY_INNER_BOARD, EMPTY_INNER_BOARD, EMPTY_INNER_BOARD],
                   [EMPTY_INNER_BOARD, EMPTY_INNER_BOARD, EMPTY_INNER_BOARD]]

    def setUp(self):
        self.boardView = BoardView()
        self.testBoard = self.EMPTY_BOARD

    def test_init_should_add_empty_board_to_board_view(self):
        self.assertEqual(BoardView.EMPTY_BOARD, self.boardView.boardViewString)

    def test_UpdateBoard_should_add_a_character_to_boardViewString(self):
        self.testBoard[1][1] = self.testBoard[1][1].replace('1', 'X')

        self.boardView.UpdateBoard(1, 1, 0, 0, 'X')

        self.assertEqual(self.testBoard, self.boardView.boardViewString)

    def test_PrintBoard_should_print_an_empty_board(self):
        self.assertEqual(EMPTY_BOARD_TO_PRINT,
                         self.boardView.GetFormattedBoard())

    def test_PrintBoard_should_print_the_board_with_one_character(self):
        self.boardView.UpdateBoard(1, 1, 0, 0, 'X')

        self.assertEqual(BOARD_WITH_ONE_CHAR,
                         self.boardView.GetFormattedBoard())
Ejemplo n.º 2
0
Archivo: Game.py Proyecto: Gerome/XXOs
    def start(self):

        innerBoards = [[InnerBoard(), InnerBoard(),
                        InnerBoard()],
                       [InnerBoard(), InnerBoard(),
                        InnerBoard()],
                       [InnerBoard(), InnerBoard(),
                        InnerBoard()]]

        overallBoard = InnerBoard()

        mainBoard = Board(innerBoards)
        boardView = BoardView()

        playerOneNoughtCross = NoughtCross(
            input("Player 1, please input your symbol.\r\n"))
        playerTwoNoughtCross = NoughtCross(
            input("Player 2, please input your symbol.\r\n"))

        playerCharacters = [playerOneNoughtCross, playerTwoNoughtCross]

        currentPlayer = 2
        playerSwitchValue = -1

        xBoard, yBoard = 1, 1

        print("Enter \"tl\" for the top left position.")

        while not self.gameIsFinished:

            print(boardView.GetFormattedBoard())

            currentPlayer += playerSwitchValue
            playerSwitchValue *= -1

            validMove = False

            while not validMove:
                print("Player {}'s go.".format(currentPlayer))

                userInput = input("Where do you want to go?\r\n").lower()

                if userInput.startswith('t'):
                    yInput = 0
                if userInput.startswith('m'):
                    yInput = 1
                if userInput.startswith('b'):
                    yInput = 2

                if userInput.endswith('l'):
                    xInput = 0
                if userInput.endswith('m'):
                    xInput = 1
                if userInput.endswith('r'):
                    xInput = 2

                moveReturnValue = mainBoard.TakeTurn(
                    xBoard, yBoard, int(xInput), int(yInput),
                    playerCharacters[currentPlayer - 1])
                validMove = (moveReturnValue == InnerBoard.ERROR_NO_ERROR)

                if not validMove:
                    print("INVALID MOVE!\r\n")

            boardView.UpdateBoard(xBoard, yBoard, xInput, yInput,
                                  playerCharacters[currentPlayer - 1].type)

            self.CheckForWin(currentPlayer, mainBoard, overallBoard,
                             playerCharacters, xBoard, yBoard)

            if (self.gameIsFinished):
                print(boardView.GetFormattedBoard())
                print("Player {} wins!.".format(currentPlayer))

            xBoard = xInput
            yBoard = yInput