Beispiel #1
0
    def get_players(self):
        player1_name = loop_input("Enter name for Player 1, or 'ai' for computer opponent")
        player2_name = loop_input("Enter name for Player 2, or 'ai' for computer opponent")

        player1 = (CommandLineWordsmushPlayer(player1_name) 
            if player1_name != 'ai' else WordsmushAIPlayer())

        player2 = (CommandLineWordsmushPlayer(player2_name) 
            if player2_name != 'ai' else WordsmushAIPlayer())

        return player1, player2
Beispiel #2
0
    def take_turn(self, game):
        turn = WordsmushTurn(game)

        move_complete = False
        move_rx = re.compile('^(help|play|pass|resign|rem|clear|\d,\d)', re.IGNORECASE)
        tile_rx = re.compile('^(?P<x>\d),(?P<y>\d)( (?P<pos>\d))?', re.IGNORECASE)

        while not move_complete:
            move_text = ''
            print(game)
            print(turn)

            while not move_rx.match(move_text):
                move_text = loop_input("Enter move or 'help'")
            
            if move_text == 'play':
                if game.is_playable(turn):
                    game.play(self, turn)
                    move_complete = True
                else:
                    print("'%s' is not a playable word." % turn.word.upper())
            elif move_text == 'help':
                self.print_help()
            elif move_text == 'clear':
                turn.clear_tiles()
            elif move_text == 'pass':
                move_complete = True
            elif move_text == 'resign':
                turn.resign = True
                game.play(self, turn)
                move_complete = True
            elif move_text.startswith('rem'):
                rem_tile = int(move_text[3:])
                turn.remove_tile_at_position(rem_tile-1)
            else:  # add tile
                tile_move = tile_rx.match(move_text)
                if tile_move:
                    tile_move_dict = tile_move.groupdict()
                    tile_x = int(tile_move_dict.get('x'))
                    tile_y = int(tile_move_dict.get('y'))
                    tile_pos = tile_move_dict.get('pos')
                    tile_pos = int(tile_pos)-1 if tile_pos else None

                    try:
                        game_tile = game.get_tile(tile_x-1, tile_y-1)
                        turn.add_tile(game_tile, tile_pos)
                    except IndexError:
                        print("No such tile.")

        return turn