Bỏ qua

Hướng dẫn sử dụng

Hướng dẫn cài đặt

Xem hướng dẫn cài đặt máy chủ này tại https://github.com/thangved/procon2023-server/

Hướng dẫn sử dụng

Tạo một game mới

Để tạo một game mới, bạn gửi một request mới method là POST tới /api/player/games/random. Lúc này, máy chủ sẽ tạo một game với các tham số ngẫu nhiên và gửi trả thông tin game đó về cho bạn.

Mẹo

Bạn có thể sử dụng swagger ui tại /api-docs để gọi API từ đó.

{
    "name": "ohi9es4",
    "num_of_turns": 54,
    "time_per_turn": 3,
    "start_time": "2023-12-13T06:54:03.546Z",
    "field": {
        "id": 7,
        "name": "a5swt0w",
        "castle_coeff": 20,
        "wall_coeff": 1,
        "territory_coeff": 5,
        "width": 15,
        "height": 14,
        "ponds": "[{\"x\":5,\"y\":7},{\"x\":9,\"y\":3},{\"x\":2,\"y\":11},{\"x\":12,\"y\":10},{\"x\":8,\"y\":7},{\"x\":5,\"y\":10},{\"x\":13,\"y\":2}]",
        "castles": "[{\"x\":12,\"y\":5},{\"x\":4,\"y\":12},{\"x\":2,\"y\":13}]",
        "craftsmen": "[{\"id\":\"0o5yn0a\",\"x\":4,\"y\":12,\"side\":\"A\"},{\"id\":\"21rccff\",\"x\":3,\"y\":0,\"side\":\"B\"},{\"id\":\"mt42k8l\",\"x\":4,\"y\":4,\"side\":\"A\"},{\"id\":\"a3gb56a\",\"x\":10,\"y\":0,\"side\":\"B\"},{\"id\":\"gmg74mp\",\"x\":5,\"y\":3,\"side\":\"A\"},{\"id\":\"w95wwgr\",\"x\":13,\"y\":2,\"side\":\"B\"}]"
    },
    "id": 7
}

Lấy danh sách game

Để lấy tất cả các game hiện có, bạn gửi một request với method GET tới /api/player/games.

Kết quả trả về có dạng như sau
[
{
    "id": 1,
    "name": "nje6van",
    "num_of_turns": 88,
    "time_per_turn": 1,
    "start_time": "2023-12-13T06:58:18.041Z",
    "sides": [
    {
        "id": 1,
        "side": "A",
        "team_name": "Team A",
        "team_id": 0
    },
    {
        "id": 2,
        "side": "B",
        "team_name": "Team B",
        "team_id": 1
    }
    ],
    "field": {
    "id": 1,
    "name": "jmulkp4",
    "castle_coeff": 20,
    "wall_coeff": 1,
    "territory_coeff": 5,
    "width": 16,
    "height": 11,
    "ponds": "[{\"x\":3,\"y\":8},{\"x\":2,\"y\":0},{\"x\":13,\"y\":1},{\"x\":12,\"y\":8},{\"x\":9,\"y\":1},{\"x\":1,\"y\":5},{\"x\":2,\"y\":6}]",
    "castles": "[{\"x\":2,\"y\":5},{\"x\":15,\"y\":9},{\"x\":6,\"y\":1},{\"x\":13,\"y\":9}]",
    "craftsmen": "[{\"id\":\"ytdxtaf\",\"x\":14,\"y\":6,\"side\":\"A\"},{\"id\":\"1rx4xky\",\"x\":9,\"y\":2,\"side\":\"B\"},{\"id\":\"y14h0wd\",\"x\":13,\"y\":7,\"side\":\"A\"},{\"id\":\"jm1mfsc\",\"x\":5,\"y\":6,\"side\":\"B\"},{\"id\":\"q9ljasb\",\"x\":9,\"y\":1,\"side\":\"A\"},{\"id\":\"hmjco7q\",\"x\":4,\"y\":9,\"side\":\"B\"},{\"id\":\"ixu7313\",\"x\":5,\"y\":1,\"side\":\"A\"},{\"id\":\"evyhugv\",\"x\":6,\"y\":0,\"side\":\"B\"}]"
    },
    "actions": []
},
{
    "id": 2,
    "name": "crzoma9",
    "num_of_turns": 36,
    "time_per_turn": 2,
    "start_time": "2023-12-13T06:58:20.819Z",
    "sides": [
    {
        "id": 3,
        "side": "A",
        "team_name": "Team A",
        "team_id": 0
    },
    {
        "id": 4,
        "side": "B",
        "team_name": "Team B",
        "team_id": 1
    }
    ],
    "field": {
    "id": 2,
    "name": "xjlfyq5",
    "castle_coeff": 20,
    "wall_coeff": 1,
    "territory_coeff": 5,
    "width": 19,
    "height": 17,
    "ponds": "[{\"x\":13,\"y\":2},{\"x\":14,\"y\":8},{\"x\":1,\"y\":8},{\"x\":9,\"y\":11},{\"x\":4,\"y\":5}]",
    "castles": "[{\"x\":3,\"y\":10},{\"x\":9,\"y\":12},{\"x\":17,\"y\":8}]",
    "craftsmen": "[{\"id\":\"tnk2j1t\",\"x\":0,\"y\":2,\"side\":\"A\"},{\"id\":\"2ns5nlh\",\"x\":12,\"y\":5,\"side\":\"B\"},{\"id\":\"8ycuybw\",\"x\":4,\"y\":8,\"side\":\"A\"},{\"id\":\"o8v1ay9\",\"x\":5,\"y\":0,\"side\":\"B\"},{\"id\":\"ame56d8\",\"x\":4,\"y\":0,\"side\":\"A\"},{\"id\":\"y370saz\",\"x\":9,\"y\":10,\"side\":\"B\"},{\"id\":\"t60vfqa\",\"x\":15,\"y\":9,\"side\":\"A\"},{\"id\":\"j65js4y\",\"x\":17,\"y\":14,\"side\":\"B\"},{\"id\":\"1004oan\",\"x\":9,\"y\":9,\"side\":\"A\"},{\"id\":\"7kz7dj5\",\"x\":18,\"y\":15,\"side\":\"B\"},{\"id\":\"zpwxu2a\",\"x\":11,\"y\":4,\"side\":\"A\"},{\"id\":\"uytdeiu\",\"x\":15,\"y\":3,\"side\":\"B\"}]"
    },
    "actions": []
},
{
    "id": 3,
    "name": "nhtcjrg",
    "num_of_turns": 42,
    "time_per_turn": 3,
    "start_time": "2023-12-13T06:58:22.393Z",
    "sides": [
    {
        "id": 5,
        "side": "A",
        "team_name": "Team A",
        "team_id": 0
    },
    {
        "id": 6,
        "side": "B",
        "team_name": "Team B",
        "team_id": 1
    }
    ],
    "field": {
    "id": 3,
    "name": "qpdys27",
    "castle_coeff": 20,
    "wall_coeff": 1,
    "territory_coeff": 5,
    "width": 16,
    "height": 18,
    "ponds": "[{\"x\":0,\"y\":12},{\"x\":10,\"y\":1},{\"x\":12,\"y\":7},{\"x\":8,\"y\":15}]",
    "castles": "[{\"x\":9,\"y\":1},{\"x\":1,\"y\":2},{\"x\":13,\"y\":16}]",
    "craftsmen": "[{\"id\":\"6ekhdgi\",\"x\":12,\"y\":16,\"side\":\"A\"},{\"id\":\"xef6rwa\",\"x\":10,\"y\":8,\"side\":\"B\"},{\"id\":\"bb3r6cg\",\"x\":8,\"y\":4,\"side\":\"A\"},{\"id\":\"y82ot3c\",\"x\":15,\"y\":2,\"side\":\"B\"},{\"id\":\"223w3jg\",\"x\":4,\"y\":7,\"side\":\"A\"},{\"id\":\"3fad92o\",\"x\":13,\"y\":7,\"side\":\"B\"}]"
    },
    "actions": []
}
]

Lấy thông tin của một game

Để lấy thông tin của một game, bạn gửi một request có method GET tới /api/player/games/<game-id>(1).

  1. Id của game mà bạn muốn lấy
Lấy thông tin của game có id là 1
{
"id": 1,
"name": "nje6van",
"num_of_turns": 88,
"time_per_turn": 1,
"start_time": "2023-12-13T06:58:18.041Z",
"sides": [
    {
    "id": 1,
    "side": "A",
    "team_name": "Team A",
    "team_id": 0
    },
    {
    "id": 2,
    "side": "B",
    "team_name": "Team B",
    "team_id": 1
    }
],
"field": {
    "id": 1,
    "name": "jmulkp4",
    "castle_coeff": 20,
    "wall_coeff": 1,
    "territory_coeff": 5,
    "width": 16,
    "height": 11,
    "ponds": "[{\"x\":3,\"y\":8},{\"x\":2,\"y\":0},{\"x\":13,\"y\":1},{\"x\":12,\"y\":8},{\"x\":9,\"y\":1},{\"x\":1,\"y\":5},{\"x\":2,\"y\":6}]",
    "castles": "[{\"x\":2,\"y\":5},{\"x\":15,\"y\":9},{\"x\":6,\"y\":1},{\"x\":13,\"y\":9}]",
    "craftsmen": "[{\"id\":\"ytdxtaf\",\"x\":14,\"y\":6,\"side\":\"A\"},{\"id\":\"1rx4xky\",\"x\":9,\"y\":2,\"side\":\"B\"},{\"id\":\"y14h0wd\",\"x\":13,\"y\":7,\"side\":\"A\"},{\"id\":\"jm1mfsc\",\"x\":5,\"y\":6,\"side\":\"B\"},{\"id\":\"q9ljasb\",\"x\":9,\"y\":1,\"side\":\"A\"},{\"id\":\"hmjco7q\",\"x\":4,\"y\":9,\"side\":\"B\"},{\"id\":\"ixu7313\",\"x\":5,\"y\":1,\"side\":\"A\"},{\"id\":\"evyhugv\",\"x\":6,\"y\":0,\"side\":\"B\"}]"
},
"actions": []
}

Một số API khác

Các bạn xem chi tiết các API tại địa /api-docs