Пример #1
0
    def make_move(self, request):
        """
        Make a move.  This function requires a url safe game key and allows the user
        to make a guess as to whether the 3rd generated number is inside or outside
        the 1st and 2nd generated number.  The input for this MUST be either 'inside'
        or 'outside' or an error will be thrown.
        """

        game = get_by_urlsafe(request.urlsafe_game_key, Game)
        if request.guess != 'inside' and request.guess != 'outside':
            raise endpoints.BadRequestException('Must guess inside or outside')
        if game.game_over:
            return game.to_form('Game already over!')
        sorting_list = [game.first_random_number, game.second_random_number]
        sorting_list = sorted(sorting_list, key=int)
        first_random_number = sorting_list[0]
        second_random_number = sorting_list[1]
        third_random_number = game.third_random_number
        max_guess = game.max_guess
        turn = game.streak


        if first_random_number == second_random_number or \
                third_random_number == second_random_number or \
                third_random_number == first_random_number: # tie is auto lose
            msg = 'tie'

        elif first_random_number < third_random_number < second_random_number:
            msg = 'inside'
        elif third_random_number < first_random_number or \
                third_random_number > second_random_number:
            msg = 'outside'
        if request.guess != msg or msg == 'tie':
            alert = "Sorry, you lost!"
            game.end_game()

        elif request.guess == msg:
            alert = "You're correct!"
            # max + 1 because of computer counting.
            game.first_random_number = random.choice(range(1, max_guess+1))
            game.second_random_number = random.choice(range(1, max_guess+1))
            game.third_random_number = random.choice(range(1, max_guess+1))
            game.streak += 1
            game.put()

        history = GameHistory.new_record(game.key, request.urlsafe_game_key, \
                                            request.guess, turn, alert)
        history.put()

        return game.to_form(alert)