示例#1
0
def add_ai(params):
    """
    Tries to add ai player into game.
    """
    try:
        get_game_state().add_ai_player()
        return {
            "status": True
        }
    except GameIsFullError:
        return {
            "status": False,
            "message": "Cannot add ai player - game is full"
        }
示例#2
0
def show(_):
    """
    :return: Data about game.
    """
    get_game_state().check_for_disconnected_players(get_client_manager())
    board = get_game_state().get_board()
    result = []
    for row in board:
        result_row = {"cells": []}
        for cell in row:
            result_row["cells"].append(_serialize_field(cell))
        result.append(result_row)
    next_player_id = get_game_state().get_next_player()
    next_player = get_client_manager().get_client(next_player_id)
    return {
        "board": result,
        "is_game_running": get_game_state().is_game_running(),
        "next_player": next_player.get_name() if next_player else None,
    }
示例#3
0
def move(params):
    """
    Informs game about player's move.
    """
    client_id = int(params.GET.get("id"))
    if get_client_manager().get_client(client_id) is None:
        return None
    move_def = params.GET.get("move")
    grouped = [move_def[n:n+2] for n in range(0, len(move_def), 2)]
    jumps = [{"x": int(m[0]), "y": int(m[1])} for m in grouped]
    return get_game_state().make_move(jumps)
示例#4
0
def join(params):
    """
    Tries to join player into game.
    """
    client_id = int(params.GET.get("id"))
    try:
        side = get_game_state().add_human_player(client_id)
        return {
            "status": True,
            "side": str(side)
        }
    except GameIsFullError:
        return {
            "status": False,
            "message": "Cannot add human player - game is full"
        }
示例#5
0
def leave(params):
    """
    Removes player from game.
    """
    client_id = int(params.GET.get("id"))
    get_game_state().remove_player(client_id)
示例#6
0
def get_moves(params):
    """
    Returns moves available for next player.
    """
    return get_game_state().get_next_player_moves()