c#版人狼知能エージェントの作り方(monodevelop/xamarin studio編)

20
C# 版人狼知能エージェントの作り方 ー MonoDevelop / Xamarin Studio 編 ー 山形大学 学術研究院 大槻恭士

Upload: takots

Post on 16-Apr-2017

625 views

Category:

Software


0 download

TRANSCRIPT

C# 版人狼知能エージェントの作り方

ー MonoDevelop / Xamarin Studio 編 ー

山形大学 学術研究院 大槻恭士

準備● Mono, MonoDevelop または Xamarin Studio をインストール(ここでの実例は Monodevelop 5.9 のものですが, Xamarin Studio もほぼ同じです)

● 人狼知能プラットフォームをダウンロードして任意のフォルダーに展開

● AIWolf.NET をダウンロードして任意のフォルダーに展開

● Json.NET を入手して, Newtonsoft.Json.dllを AIWolf.NET と同じフォルダーに置く

新規プロジェクトの作成( 1 )

● ファイル>新規>ソリューション

● .NET のライブラリを選択

新規プロジェクトの作成( 2 )

● プロジェクト名を入力(ここでは ExerciseAgent )

新規プロジェクトの作成( 3 )

● 自動的にソースファイル MyClass.cs にクラスMyClass が作成される

参照の追加

● プロジェクト>参照アセンブリの編集

● AIWolfLibCommon.dll

AIWolfLibClient.dll

を追加

自作 RoleAssignPlayer の作成( 1 )

● エディタのコンテキストメニューで

リファクタリング>名前の変更

Myclass を ExerciseRoleAssignPlayer に変更

自作 RoleAssignPlayer の作成( 2 )

● 基底クラスに AbstractRoleAssignPlayer を指定

→ 赤色でエラーが示される

→ コンテキストメニュー>解決

自作 RoleAssignPlayer の作成( 3 )

● 抽象メソッドの実装

コンテキストメニュー>リファクタリング

挿入場所を選んで Enter

自作 RoleAssignPlayer の作成( 4 )

● プレイヤー名を返すように Name プロパティを修正● 役職に応じたサンプルプレイヤーを使う人狼知能

エージェントの出来上がり

自作プレイヤーでゲーム実行( 1 )

● プロジェクト> ExerciseAgent のオプション

実行>カスタムコマンド>実行コマンド(ClientStarter.exeの fullpath) ­h localhost ­p 10000 ­c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER

作業ディレクトリを ${TargetDir}

自作プレイヤーでゲーム実行( 2 )

● クリックしてデバッグ開始

接続完了

Start Game

占い師の実装例( 1 )

● コンテキストメニュー>追加>新しいファイル

● 空のクラスを選択し

名前を

ExerciseSeerPlayer

占い師の実装例( 2 )

● 右図は基底クラスをAbstractSeer にしてリファクタリングで抽象メソッドを仮実装した状態

● これらのメソッドの意味・呼ばれるタイミングなどは Java 版のチュートリアルを参照

占い師の実装例( 3 )

Divine() の実装方針● まだ占っていない自分以外の生存プレイヤーからラ

ンダムに選択

占い師の実装例( 4 )

Vote() の実装方針● 人狼を見つけていたらその中からランダム● 人狼をまだ見つけていなければ,白(含自分)判

定以外のプレイヤーからランダム

占い師の実装例( 5 )

Talk() の実装方針● 占いで人狼を見つけたら CO● CO 後は占い結果を報告

占い師の実装例( 6 )

● 今回は Finish() には何も実装しない

● 最後に ExerciseRoleAssignPlayer のコンクトラクタで ExerciseSeerPlayer を占い師の時に使うように設定

人狼知能大会に提出する場合

● Release構成でビルド● プロジェクトフォルダー

の下のbin/Release/

フォルダーの中の

ExerciseAgent.dll

を提出

コマンドラインからの実行例

● dll ファイルを AIWolf.NET を展開したフォルダーに置くと楽