def run(self):
        while True:
            os.system('clear')
            self.show_info()
            self.show_board()

            try:
                self.show_commands()
                next_move = self.controllers[0].next_move(self.board)
                self.board.make_move(next_move, self.controllers[0].get_colour())
            except NoMovesError:
                print("Game Over")
                blacks = len([p for p in self.board.pieces if p.get_state() == BLACK])
                whites = len([p for p in self.board.pieces if p.get_state() == WHITE])

                if blacks > whites:
                    print("Black won this game.")
                    exit()
                elif blacks == whites:
                    print("This game was a tie.")
                    exit()
                else:
                    print("White won this game.")
                    exit()

            self.controllers.rotate()

            print("Current move is: ", self.to_board_coordinates(next_move))

            self.previous_move = next_move
The game loop will print game information, the board, the possible moves, and then wait for the
dataset/ETHPy150Open Zolomon/reversi-ai/game/game.py/Game.run