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

20
C# 版版版版版版版版版版版版版版版 ― Visual Studio 版 版版版版 版版版版版 版版版版

Upload: takots

Post on 19-Jan-2017

668 views

Category:

Software


0 download

TRANSCRIPT

Page 1: C#版人狼知能エージェントの作り方(Visual Studio編)

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

Page 2: C#版人狼知能エージェントの作り方(Visual Studio編)

準備1. Visual Studio をインストールここでは VS Community 2015 を想定2. 人狼知能プラットフォームをダウンロードして,任意のフォルダーに展開しておく3. AIWolf.NET をダウンロードして,任意のフォルダーに展開しておく4. Json.NET を入手し, Newtonsoft.Json.dll を 3. と同じフォルダーに置く

Page 3: C#版人狼知能エージェントの作り方(Visual Studio編)

新規プロジェクトの作成(1)ファイル>新規作成>プロジェクト

Page 4: C#版人狼知能エージェントの作り方(Visual Studio編)

新規プロジェクトの作成(2)C# クラスライブラリを選択し,プロジェクト名(ここでは ExerciseAgent )を入力

Page 5: C#版人狼知能エージェントの作り方(Visual Studio編)

新規プロジェクトの作成(3)自動的にソースファイル Class1.cs にクラス Class1 が作成される

Page 6: C#版人狼知能エージェントの作り方(Visual Studio編)

参照の追加準備しておいた AIWolfLibCommon.dll, AIWolfLibClient.dll を参照

Page 7: C#版人狼知能エージェントの作り方(Visual Studio編)

自作 RoleAssignPlayer の作成(1)Class1.cs を ExerciseRoleAssignPlayer.cs に名前を変更→ クラス名も自動的に変わる

Page 8: C#版人狼知能エージェントの作り方(Visual Studio編)

自作 RoleAssignPlayer の作成(2)ExerciseRoleAssignPlayer クラスの基底クラスに AbstractRoleAssignPlayer を指定

エラー表示とともに電球マークが現れるので希望のクイック操作を選択

Page 9: C#版人狼知能エージェントの作り方(Visual Studio編)

自作 RoleAssignPlayer の作成(3)さらに電球から抽象クラスを実装するクイック操作を選択

Page 10: C#版人狼知能エージェントの作り方(Visual Studio編)

自作 RoleAssignPlayer の作成(4)プレイヤー名を返すように Name プロパティを修正し,不要な using を整理すれば役職に応じたサンプルプレイヤーを使う人狼知能エージェントの出来上がり

Page 11: C#版人狼知能エージェントの作り方(Visual Studio編)

自作プレイヤーでゲーム実行(1)プロジェクト> ExerciseAgent のプロパティ>デバッグ• 「外部プログラムの開始」をチェックし ClientStarter.exe を指定• localhost のポート 10000 に接続し, SEER をリクエストする場合のコマンドライン引数  -h localhost –p 10000 –c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER

Page 12: C#版人狼知能エージェントの作り方(Visual Studio編)

自作プレイヤーでゲーム実行(2)開始ボタンをクリック

接続完了

Start Game

Page 13: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(1)プロジェクト>クラスの追加

ExerciseSeerPlayer.cs を追加

Page 14: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(2)基底クラスを AbstractSeer に指定し電球に従って抽象メソッドを仮実装したところが右図

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

Page 15: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(3)Divine() の実装方針• まだ占っていない自分以外の生存プレイヤーからランダムに選択

Page 16: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(4)Vote() の実装方針• 人狼を見つけていたらその中からランダム• 人狼をまだ見つけていなければ,白(含自分)判定以外のプレイヤーからランダム

Page 17: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(5)Talk() の実装方針• 占いで人狼を見つけたら

CO• CO 後は占い結果を報告

Page 18: C#版人狼知能エージェントの作り方(Visual Studio編)

占い師の実装例(6)今回は Finish() には何も実装しない

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

Page 19: C#版人狼知能エージェントの作り方(Visual Studio編)

人狼知能大会に提出• Release 構成でビルド

• プロジェクトフォルダーの bin\Release\ExerciseAgent.dll を提出

Page 20: C#版人狼知能エージェントの作り方(Visual Studio編)

コマンドラインからの実行• dll ファイルを AIWolf.NET を展開したフォルダーに置くのが楽

ClientStarter.exe -h localhost –p 10000 –c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER