Example #1
0
def begin_puzzle_game(request):

    match = Match.objects.get(id=request.session['match'])
    game = cached.get_game(match.id)

    if request.user.is_authenticated():
        player_name = request.user.username
    else:
        player_name = game_master.ANON_PLAYER_NAME

    hand = game_master.draw_up_to(game, player_name, 5)

    # init puzzle life
    game['players'][player_name]['life'] = match.puzzle.player_life

    # puzzle starting units
    starting_units = PuzzleStartingUnit.objects.filter(puzzle=match.puzzle)

    for starting_unit in starting_units:
        game_master.play(game, 'ai', starting_unit.unit_card.pk, 'ai', starting_unit.location.row, starting_unit.location.x, ignore_hand=True)

    cached.save(game) 
    censored = game_master.get_censored(game, player_name)

    return HttpResponse(simplejson.dumps(censored), "application/javascript")
Example #2
0
def do_turns(game, player_moves):

    from d_game import ai 

    player_name = game['player']
    opponent_name = get_opponent_name(game, player_name)

    logging.info("XXX player hand: %s" % get_player(game, player_name)['hand'])

    # turn init
    heal(game, player_name) 
    refill_tech(game, player_name)
    remove_summoning_sickness(game, player_name)

    do_turn(game, player_name, player_moves)

    # AI turn init
    heal(game, opponent_name) 
    refill_tech(game, opponent_name)
    draw(game, opponent_name, get_player(game, opponent_name)['num_to_draw'])
    remove_summoning_sickness(game, opponent_name)

    # AI decides what to do (but doens't actually affect the 
    # game state yet
    ai_moves, ai_turn = ai.get_turn(game, opponent_name) 

    # log the turn for client-server verification purposes
    # and process its decisions.
    game_before_ai = simplejson.dumps(game) 
    do_turn(game, opponent_name, ai_moves) 
    game_after_ai = simplejson.dumps(game) 

    # get 2 new cards for player 
    # this is out of order because we're actually drawing
    # for the player's next turn, not the current one just processed
    logging.info("XXX player is about to draw %s" % get_player(game, player_name)['num_to_draw'])

    draw_cards = draw(game, player_name, get_player(game, player_name)['num_to_draw'])

    # save turn changes on server
    cached.save(game)

    #serialize and ship it
    hand_and_turn_json = """{
            'player_draw': %s,
            'ai_turn': %s,
            'verify_board_state_before_ai': %s,
            'verify_board_state_after_ai': %s,
            }""" % (simplejson.dumps(draw_cards),
                    simplejson.dumps(ai_turn),
                    game_before_ai,
                    game_after_ai)

    return hand_and_turn_json
Example #3
0
def begin_ai_game(request):
    
    match = Match.objects.get(id=request.session["match"])
    game = cached.get_game(match.id)

    if request.user.is_authenticated():
        player_name = request.user.username
    else:
        player_name = game_master.ANON_PLAYER_NAME

    hand = game_master.draw_up_to(game, player_name, 5)

    cached.save(game)
    censored = game_master.get_censored(game, player_name)
    game = cached.get_game(match.id)

    return HttpResponse(simplejson.dumps(censored), "application/javascript")