ゲーム参加方法
ランダムに動くAIを作ります
client_deno/client_random.jsを作成します
code:javascript
import { Algorithm } from "./algorithm.js";
export class ClientRandom extends Algorithm {
onInit(boardPoints, agentNum, turnNum) {
}
onTurn(field, pid, agents, turn) {
}
}
if (import.meta.main) {
const a = new ClientFirst();
a.match({
id: "ai-first",
name: "AI-first",
spec: "",
password: "ai-first-pw",
});
}
onInitはゲーム開始前の処理です
boardPoints マスの点数の配列
agentNum エージェント数
turnNum 総ターン数
onTurnはターンごとの思考です
field マスの状況
pid プレイヤー番号(0~)
agents エージェントの状況
turn 現在ターン数
戻り値 エージェントの次の手
onTurnを実装します
code:javascript
onTurn(field, pid, agents, turn) {
const h = field.length;
DIR = [
];
const actions = [];
for (let i = 0; i < agents.length; i++) {
if (a.x === -1) {
const x = Math.floor(Math.random() * w);
const y = Math.floor(Math.random() * h);
} else {
const n = Math.floor(Math.random() * DIR.length);
}
}
return actions;
}
エージェント座標が-1は未配置です
エージェントの次の手を配列で返します
AIを起動します
code:shell
$ deno run -A client_deno/client_random.js
対戦サイトにアクセスします
「最新のゲームビューアはこちらから」を開きます
onInitの引数の詳しい説明です
boardPoints
マスの点数です
二次元配列です(添字は[y番号][x番号])
field
フィールドの状況です
二次元配列です(添字は[y番号][x番号])
要素はオブジェクトです
type: 種類 (0=空き土地・領域 1=壁)
pid: プレイヤー番号(0,1,...) (空き土地は-1)
point: 点数
x: x座標
y: y座標
onTurnの引数と戻り値の詳しい説明です
agents
エージェントの状況です
1次元配列です
要素はオブジェクトです
x: x座標 (-1は未配置)
y: y座標 (-1は未配置)
戻り値
actions
1次元配列です
要素はオブジェクトです
[エージェント番号,アクション名,座標x,座標y]
アクション名は、"PUT"、"MOVE"、"REMOVE"です