大富豪をAI(C#(Code DOM)とPowerShell)に対応

ということで、大富豪をAI(DLR利用)に対応 - ++C++; // 管理人の日記をちょっと修正。
Code DOM 使って C# で AI 与えれるようにしたのと、PowerShellスクリプトにも対応。

AI 設定するところで C#PowerShell を読めるようになりました。

Ruby はうまく動くサンプルを作れず・・・

あと、今後としては、MEF(Managed Extension Framework)でコンパイル済みのDLLを使ってAI定義とかもやってみたい。

C#

ソースファイル中で Daifugou.IArtificialIntelligence インターフェースを継承したクラスを1個定義します。

PowerShell

DLR版同様、スクリプトに対して以下の変数が渡されます。

  • $hand: 今現在の手札一覧(Card型の配列)
  • $table: 今、場に出ているカード一覧(Card型の配列)
  • $rank: 今、場に出ているカードのランク(int、複数枚出ている場合はそのうち最大のランク)
  • $suit: (スイート縛り状態の場合のみ)どのスイートで縛られているか(enum Suit)
  • $mode: 今現在のモード(enum Mode: ビットフラグ。詳細は後述)
  • $revolution: 革命状態かどうか(bool)
  • $history: 過去1ターンの履歴(History型。詳細は口述)

出したいカードは戻り値として返します。