Esempio n. 1
0
def guess(request):

    word_id = request.POST['wordId']
    unique_id = request.POST['game_id']
    player = request.POST['player']
    clue_number = int(request.POST['clueNumber'])

    game = get_object_or_404(Game, unique_id=unique_id)
    user = get_object_or_404(User, username=player)
    check_double_post(game, user)

    if word_id:
        word = get_object_or_404(Word, id=word_id.replace('word', ''))
        card = get_object_or_404(Card, word=word, game=game)
        card.chosen = True
        card.save()
    else:
        # User passed
        card = None

    team_color = request.POST['teamColor'].split('_')[0]
    guess = Guess(user=user, guesser_team=team_color, game=game, card=card)
    guess.save()
    if not word_id:
        # User passed
        game.current_turn = find_next_turn(game)
        game.current_guess_number = 0
        game.save()
        return Response({"message": "OK"})
    else:
        game.current_guess_number += 1

    if card.color == 'black':
        # Assassinated!
        game.active = False
        team_choices = {'red', 'blue'}
        other_team = (team_choices - set(team_color)).pop()
        game.winning_team = other_team
    elif (clue_number > 0 and game.current_guess_number >= clue_number + 1) \
            or guess.is_wrong():
        # Note: this greater than also works for '0' unlimited clues
        game.current_turn = find_next_turn(game)
        game.current_guess_number = 0

    decrement_card_counter(game, card.color)
    check_game_over(game)

    game.save()
    return Response({"message": "OK"})
Esempio n. 2
0
def answer():
    # Prevent user from guessing twice on the same movie
    try:
        guess = Guess.save(
            request.form['guess'],
            g.user.id,
            request.form['movie']
        )
    except IntegrityError, e:
        return 'Du har redan gissat på den här filmen', 403