or
Do you really want to delete this template?
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
![image alt](https:// "title") | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | Emoji list | ||
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more
Sign in to GitHubHackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
Syncing
xxxxxxxxxx
かこみますネットワークプロトコルを決めようの会
ここに書いてある情報は開発中のため、変更される恐れがあります。
使用するプロトコル
全国高等専門学校第30 回プログラミングコンテストで使われた回答システムを参考に製作
参考ページ
競技部門・データ書式に関する情報を公開しました
簡易回答システムを公開しました!
エンドポイント
ここに書いてある
Example ResponsBody
は成功したときのレスポンスである。リクエストが間違っていた場合などは、コード:400で、Bodyに以下のようなエラーメッセージが入ったレスポンスが帰ってくる。
ユーザアカウントAPI
登録
POST /users/regist
Example RequestBody
screenName
:表示名、好きな名前を指定できるname
:ユーザネーム、固有password
:パスワードExample ResponsBody
id
:ユーザ固有のID。ユーザネームはあとから変更できるが、IDは変更不可(ユーザーネーム変更APIは未実装)取得
GET /users/show/:(userId or userName or 無し)
userId
またはuserName
で指定したユーザの情報を取得することができる。指定しないと、全ユーザの情報が配列で帰ってくる。
Example ResponsBody
削除
POST /users/delete
Example RequestBody
name
またはid
:どちらかを指定。どちらも指定した場合はid
が優先されるpassword
:アカウント登録時に設定したパスワードを指定Example ResponseBody
レスポンスはなし。
ゲームAPI
プレイヤー登録&トークン・ゲームID取得
POST /match
name
とspec
をBodyに含めてリクエストすると、playerId
とroomId
が取得できる。Example RequestBody
name
id
とどちらかは指定しなければならないid
name
とどちらかは指定しなければならないpassword
必須spec
任意gameId
任意useAi
任意aiOption.aiName
任意aiOption.boardName
任意Example ResponsBody
userId
:ユーザID(リクエストでname
のみ送信した場合にもユーザIDが帰ってくる)accessToken
:行動(Action)するときに必要なトークンgameId
:ゲームID。試合情報を取得するときにはこのIDを使用する。index
:自身がplayer1かplayer2かを判別用(試合情報のplayers配列番号)試合状態取得
GET /match/:gameId
gameId
が分かれば、誰でも試合状態を取得することができる。Example ResponsBody
gameId
:ゲームIDgaming
:ゲーム中かどうかending
:ゲーム終了したかどうかboard
:ボード情報(両プレイヤーが揃ったら開示。揃ってない時にはnull)width
:フィールドの横幅height
:フィールドの縦幅nAgent
:エージェントの数nPlayer
:ゲームに参加しているプレイヤー人数points
:フィールドのポイント配列(1次元配列)startedAtUnixTime
:ゲームのスタート時間nextTurnUnixTime
:次のターンまでの時間turn
:現在のターン数totalTurn
:総ターン数(非推奨、代わりにboard.nTurnを使用)tiled
:タイル配置状況配列(1次元配列)players
:各プレイヤー状況id
:ユーザIDagents
:各エージェント状況x
:x座標y
:y座標tilePoint
:タイルポイントareaPoint
:領域ポイントlog
:ログpoints
basepoint
wallpoint
actions
agentId
:エージェント IDtype
:行動の種類,1:配置, 2:停留, 3:移動, 4:除去x
:x座標y
:y座標res
:行動の適応状況,0:成功, 1:競合, 2:REVERT, 3:同じエージェントに対して複数のアクションを同時に送った, 4:ERR_ILLEGAL_AGENT, 5:ERR_ILLEGAL_ACTION行動更新
POST /match/:RoomID/action
各アクションを送信できる。
matchで取得できる
accessToken
をヘッダーAuthorization
に含める必要がある。Example Request & ResponseBody
agentId
:エージェント IDtype
:行動の種類,"PUT":配置, “MOVE”:移動, “REMOVE”:除去, “STAY”:停留x
:x座標y
:y座標Example ResponseBody
receptionUnixTime
:サーバ受理時刻(タイムラグなどの判定に使える?)turn
:Actionが実行されるターン数動作確認用API(未実装)
/pingにトークンを付けてアクセスすることで トークン がプログラムからサーバーに 正しく送られているかを確認できます。
ストリーミングAPI(WebSockets)
後ほど…