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" }
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, }
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)
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" }
def leave(params): """ Removes player from game. """ client_id = int(params.GET.get("id")) get_game_state().remove_player(client_id)
def get_moves(params): """ Returns moves available for next player. """ return get_game_state().get_next_player_moves()