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
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