C#版人狼知能エージェントの作り方(Visual Studio編)
Transcript of C#版人狼知能エージェントの作り方(Visual Studio編)
![Page 1: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/1.jpg)
C# 版人狼知能エージェントの作り方― Visual Studio 編 ―山形大学 学術研究院 大槻恭士
![Page 2: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/2.jpg)
準備1. Visual Studio をインストールここでは VS Community 2015 を想定2. 人狼知能プラットフォームをダウンロードして,任意のフォルダーに展開しておく3. AIWolf.NET をダウンロードして,任意のフォルダーに展開しておく4. Json.NET を入手し, Newtonsoft.Json.dll を 3. と同じフォルダーに置く
![Page 3: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/3.jpg)
新規プロジェクトの作成(1)ファイル>新規作成>プロジェクト
![Page 4: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/4.jpg)
新規プロジェクトの作成(2)C# クラスライブラリを選択し,プロジェクト名(ここでは ExerciseAgent )を入力
![Page 5: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/5.jpg)
新規プロジェクトの作成(3)自動的にソースファイル Class1.cs にクラス Class1 が作成される
![Page 6: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/6.jpg)
参照の追加準備しておいた AIWolfLibCommon.dll, AIWolfLibClient.dll を参照
![Page 7: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/7.jpg)
自作 RoleAssignPlayer の作成(1)Class1.cs を ExerciseRoleAssignPlayer.cs に名前を変更→ クラス名も自動的に変わる
![Page 8: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/8.jpg)
自作 RoleAssignPlayer の作成(2)ExerciseRoleAssignPlayer クラスの基底クラスに AbstractRoleAssignPlayer を指定
エラー表示とともに電球マークが現れるので希望のクイック操作を選択
![Page 9: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/9.jpg)
自作 RoleAssignPlayer の作成(3)さらに電球から抽象クラスを実装するクイック操作を選択
![Page 10: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/10.jpg)
自作 RoleAssignPlayer の作成(4)プレイヤー名を返すように Name プロパティを修正し,不要な using を整理すれば役職に応じたサンプルプレイヤーを使う人狼知能エージェントの出来上がり
![Page 11: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/11.jpg)
自作プレイヤーでゲーム実行(1)プロジェクト> ExerciseAgent のプロパティ>デバッグ• 「外部プログラムの開始」をチェックし ClientStarter.exe を指定• localhost のポート 10000 に接続し, SEER をリクエストする場合のコマンドライン引数 -h localhost –p 10000 –c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER
![Page 12: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/12.jpg)
自作プレイヤーでゲーム実行(2)開始ボタンをクリック
接続完了
Start Game
![Page 13: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/13.jpg)
占い師の実装例(1)プロジェクト>クラスの追加
ExerciseSeerPlayer.cs を追加
![Page 14: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/14.jpg)
占い師の実装例(2)基底クラスを AbstractSeer に指定し電球に従って抽象メソッドを仮実装したところが右図
これらのメソッドの意味・呼ばれるタイミングなどは Java 版と同じ ↓詳細は Java 版のチュートリアルを参照
![Page 15: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/15.jpg)
占い師の実装例(3)Divine() の実装方針• まだ占っていない自分以外の生存プレイヤーからランダムに選択
![Page 16: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/16.jpg)
占い師の実装例(4)Vote() の実装方針• 人狼を見つけていたらその中からランダム• 人狼をまだ見つけていなければ,白(含自分)判定以外のプレイヤーからランダム
![Page 17: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/17.jpg)
占い師の実装例(5)Talk() の実装方針• 占いで人狼を見つけたら
CO• CO 後は占い結果を報告
![Page 18: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/18.jpg)
占い師の実装例(6)今回は Finish() には何も実装しない
最後に ExerciseRoleAssignPlayer のコンストラクタで ExerciseSeerPlayer を占い師のときに使うように設定
![Page 19: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/19.jpg)
人狼知能大会に提出• Release 構成でビルド
• プロジェクトフォルダーの bin\Release\ExerciseAgent.dll を提出
![Page 20: C#版人狼知能エージェントの作り方(Visual Studio編)](https://reader035.fdocuments.net/reader035/viewer/2022081421/588042031a28abfd0a8b656b/html5/thumbnails/20.jpg)
コマンドラインからの実行• dll ファイルを AIWolf.NET を展開したフォルダーに置くのが楽
ClientStarter.exe -h localhost –p 10000 –c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER