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)