Esempio n. 1
0
class User:
    '''
    '''
    
    def __init__(self):
        self.minesweeper_board = MinesweeperBoard(5,5)
        self.moves = []
        self.current_move = {}
        self.is_board_completed = False
        
    def get_move(self):
        move = raw_input()
        try:
            option, position = self.parse_input(move)
        except Exception as e:
            print e.message
            self.get_move() 
        self.current_move['option']=option
        self.current_move['position']=position
#         import pdb;pdb.set_trace()  
    
    def move(self):
        if self.current_move['option'] == 'o':
            result = self.minesweeper_board.open(self.current_move['position'][0], self.current_move['position'][1])
            if not result:
                self.minesweeper_board.print_board()
                raise Exception('Oops, you stepped on a mine! Game over!')
        elif self.current_move['option'] == 'f':
            self.minesweeper_board.flag(self.current_move['position'][0], self.current_move['position'][1])
        self.moves.append(self.current_move)
        self.current_move = {}
        self.is_board_completed = self.minesweeper_board.is_game_over()
    
    def parse_input(self, move):
        #To use regular expressions
        if (len(move) != 6) or (move[0] not in ['o', 'f']) or (move[1] != '(') or (move[5] != ')'):
            raise Exception('Please enter valid input')
        position = (int(move[2]), int(move[4]))
#         if not self.minesweeper_board.is_valid_position(position[0], position[1]):
#             raise Exception('Position not found in board')
        return move[0] , position
    
    def play(self):
        try:
            print self.minesweeper_board.mine_position
            while True:
                self.minesweeper_board.print_board()
                self.get_move()
                self.move()
                if self.is_board_completed:
                    break
            self.minesweeper_board.print_board()
            print 'Wow you cleared the minefield! Game over!'
        except Exception as e:
            print e.message