Ejemplo n.º 1
0
def reset(request, room_pk):
    if request.method != "POST" or "players" not in request.POST:
        return HttpResponseForbidden()
    room = get_object_or_404(Room, pk=room_pk)
    new_state = MainLogic.get_new_game(int(request.POST["players"]))

    def do_action(player, players):
        gp.invalidate_players(players)
        print(new_state)
        return gp.set_new_state(room, new_state, change_to_drawable, player, players)

    return gp.player_action(room, request.session.session_key, do_action)
Ejemplo n.º 2
0
def enter_room(request, room_pk, dir_name):
    print("halo1")
    room = get_object_or_404(Room, pk=room_pk)
    room.game_state = pickle.dumps(MainLogic.get_new_game(2))
    room.save()
    gp.add_player(room, request.session.session_key, 2)
    print("halo1")

    def do_action(player, players):
        if "current_player" not in player:
            taken_places = [player["current_player"] for player in players if "current_player" in player]
            free_place = 0
            while free_place in taken_places:
                free_place += 1
            player["current_player"] = free_place

        return gp.render_game(request, dir_name, room_pk)

    return gp.player_action(room, request.session.session_key, do_action, redirect('main'))
Ejemplo n.º 3
0
def action(request, room_pk):
    if request.method != "POST":
        return HttpResponseForbidden()
    room = get_object_or_404(Room, pk=room_pk)

    def do_action(player, players):
        state = pickle.loads(room.game_state)
        if state["current_player"] != player["current_player"]:
            return HttpResponseForbidden()
        try:
            MainLogic.do_move(state, int(request.POST['piece_number']))
        except MoveNotValidException:
            print("%s: Invalid move" % player["who"])
            return HttpResponseForbidden()
        else:
            gp.invalidate_players(players, player)
            print(state)
            print(change_to_drawable(state, None, None))
            return gp.set_new_state(room, state, change_to_drawable)

    return gp.player_action(room, request.session.session_key, do_action)