# サンプルAIの解説 ###### tags: `解説資料` この記事ではサンプルAI同士を対戦させる手順と サンプルAIの行動について簡単に解説します ## システムのセットアップ 対戦サーバとサンプルAIはDenoで実装されていますので まずはDenoをインストールします Windowsユーザの方はPowerShellを起動して以下のコマンドを実行します ``` iwr https://deno.land/x/install/install.ps1 -useb | iex ``` Macユーザの方はTerminalを起動して以下のコマンドを実行します ``` curl -fsSL https://deno.land/x/install/install.sh | sh ``` 次にGitHubのCode for KOSENの囲みマスシステムをダウンロードして解凍します https://github.com/codeforkosen/Kakomimasu/archive/master.zip コマンドプロンプトかTerminalで以下のコマンドを入力し 対戦サーバを起動します ```terminal $ cd apiserver $ deno run -A apiserver.ts ``` ```servest:router listening on :8880```が出力されたら対戦サーバの起動成功です ## 対戦状況ページの表示 Chromeでhttp://localhost:8880/ にアクセスすると対戦状況がみられるページが開きます 「ゲーム一覧はこちらから」をクリックすると観戦したい試合を選択できます ここでは「最新のゲームビューアーはこちらから」をクリックして最新の対戦を観戦できるようしておいてから対戦AIの起動作業を行います http://localhost:8880/gamedetails.html ## サンプルAIの起動 まずサンプルAIの接続先をlocalhostに変更します client_deno/client_util.jsの先頭行にある ```javascript // const defaulthost = "http://localhost:8880/api"; const defaulthost = "https://kakomimasu.sabae.club/api"; ``` を以下のように変更します ```javascript const defaulthost = "http://localhost:8880/api"; // const defaulthost = "https://kakomimasu.sabae.club/api"; ``` 次に新しいターミナルを開き1番目のAIを起動します ```terminal $ cd client_deno $ deno run -A client_a1.js ``` 新しいターミナルを開き2番目のAIを起動します ```terminal $ cd client_deno $ deno run -A client_a4.js ``` 2つのAIが揃ったのでブラウザの対戦状況ページでは試合が開始しています ### サンプルAIの簡単な解説 ここではclient_denoフォルダに含まれているサンプルAIの行動を解説します サンプルAIは以下の2つの事についてターンごとに考えます 1. 未配置エージェントの配置座標 2. 配置済エージェントの移動方向 #### client_a1.js(AI名:a1) 1. 未配置エージェントは最も高い点数のマスに配置します * ただし競合を防ぐために点数上位何件かは使いません(ターンごとにランダムに決定) 2. 配置済エージェントの作戦は8方向のうちランダムに1方向に動かします(フィールド外など移動不可の方向でも) #### client_a2.js(AI名:a2) 1. 未配置エージェントの行動はa1と同じです 2. 配置済エージェントの行動は8方向のうちランダムに動かしますがフィールド外へは移動しないようになっています #### client_a3.js(AI名:a3) 1. 未配置エージェントの行動はa1と同じです 2. 配置済エージェントの行動は8方向のうち最も高い点数のマスに移動します * ただし移動先のマスの状況に応じて点数が加算されます * 敵の陣地ならマスの点数に10点加算します * 空きマスならマスの点数に5点加算します * 敵の壁ならマスの点数に加算しません * もし8方向すべてが自分の陣地ならa2と同じように移動します #### client_none.js(AI名:none) なにも行わないAIです。自作のAIの確認等にお使いください。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up