def create_board(self): self.board = MinesweeperBoard(*self.LEVEL_SETTINGS.get(self.level))
class MinesweeperGame: LEVEL_SETTINGS = {'Hard': (40, 40, 100), 'Medium': (30, 30, 30), 'Easy': (20, 20, 5)} def __init__(self): self.board = self.level = None def get_user_response(self, question, acceptable_answers): acceptable_answer = None while not acceptable_answer: raw_answer = raw_input(question) if raw_answer in acceptable_answers: acceptable_answer = raw_answer return acceptable_answer def prompt_for_level(self): level_response_options = {'H': 'Hard', 'Hard': 'Hard', 'Medium': 'Medium', 'M': 'Medium', 'E': 'Easy', 'Easy': 'Easy'} question = 'What level would you like to play at-- Easy (E), Medium (M), or Hard (H)? ' level = self.get_user_response(question, level_response_options.keys()) self.level = level_response_options.get(level) def prompt_for_action(self): action_options = {'F': 'Flag', 'Flag': 'Flag', 'C': 'Clear', 'Clear': 'Clear'} question = 'What woud you like to do? Flag (F) or Clear (C)? ' action = self.get_user_response(question, action_options.keys()) return action_options.get(action) def prompt_for_space_choice(self): question = 'What space would you like to explore-- row(int), col(int)? ' raw_output = raw_input(question) try: row, col = [int(d) for d in raw_output.split(', ')] self.board.grid[row][col] except Exception as e: print e self.prompt_for_space_choice() return (row, col) def prompt_for_move(self): row, col = self.prompt_for_space_choice() action = self.prompt_for_action() if action == 'Flag': self.board.choose_space_to_flag(row, col) elif action == 'Clear': self.board.choose_space_to_clear(row, col) def check_if_finished(self): if game.board.check_if_finished(): return True return False def create_board(self): self.board = MinesweeperBoard(*self.LEVEL_SETTINGS.get(self.level)) def play_game(self): self.prompt_for_level() self.create_board() self.board.draw_board() finished = False while not finished: self.prompt_for_move() self.board.draw_board() finished = self.board.check_if_finished() if finished: print 'Hooray! You won!'