Example #1
0
class Game:
    def __init__(self, players_turn, feature_length, label_length):
        self.players_turn = players_turn
        self.game_over = False
        self.user = Player('user')
        self.opponent = Player('opponent')

        self.game_actions = Actions()

        self.player_training_data = Data(feature_length, label_length)
        self.opponent_training_data = Data(feature_length, label_length)

    def int_try_parse(self, value):
        try:
            return int(value), True
        except ValueError:
            return value, False

    def run(self, opponents_action):
        if self.players_turn:
            self.user.print_health()
            self.game_actions.display_player_actions(self.user)
            print('5. Exit')

            user_input = input('Action (1-5)')
            players_action, is_valid = self.int_try_parse(user_input)
            os.system('cls')

            if is_valid and players_action > 0 and players_action <= 5:
                if players_action == 5:
                    self.game_over = True
                else:
                    self.player_training_data.record(players_action, self.user, self.opponent, True)
                    self.game_actions.perfrom(self.user, self.opponent, players_action)
                    self.game_actions.display_player_chosen_action(self.user, players_action)
                    
                self.players_turn = False

            else:
                print('Please enter a valid option from 1-5')
        else: #AI's turn
            #print('opponent\'s choice number: {}'.format(opponents_action))

            self.opponent_training_data.record(opponents_action, self.user, self.opponent, False)

            self.opponent.print_health()
            self.game_actions.display_ai_chosen_action(self.opponent, opponents_action)
            self.game_actions.perfrom(self.opponent, self.user, opponents_action)

            self.players_turn = True

        if self.user.alive is False or self.opponent.alive is False:
            os.system('cls')

            if self.user.alive is False:
                print('You lost')
                return True, self.players_turn, self.user, self.opponent, self.opponent_training_data
            else:
                print('You Won')
                return True, self.players_turn, self.user, self.opponent, self.player_training_data
        
        return self.game_over, self.players_turn, self.user, self.opponent, None