start.py の見方。 - aharalabMeiji/fireplaceAharaLab GitHub Wiki

メイン関数

def main():

カード情報を読み込むところ

from fireplace import cards
cards.db.initialize()

典型的なエージェントがプリセットされています。

  • 人がキーボード入力できる(”Human"というプレーヤー名に、人プレーヤーを張り付けています。)

     Human=HumanAgent("Human1",HumanAgent.HumanInput,myClass=CardClass.HUNTER )
    
  • 着手できるものの中から完全にランダムに選択する

     Random=StandardAgent("Random",StandardAgent.StandardRandom, myClass=CardClass.HUNTER) 
    
  • 典型的なパラメータの重みつき和で評価するエージェント(myClassを指定しないとHunterクラスになる。)

     Vector2=StandardVectorAgent("Vector2",StandardVectorAgent.StandardStep1\
      ,myOption=[3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4,3,3,8,3,2,7,9,5,0,2,8] )
    
  • MCTS によるターン内探索

     from agent_Miyaryo import MiyaryoAgent     
     Miyaryo=MiyaryoAgent("Miyaryo",MiyaryoAgent.MiyaryoAI)
    

エージェントはマリガンチョイスをプログラミングすることができる。

   Human1=HumanAgent("Human1",HumanAgent.HumanInput,myClass=CardClass.MAGE,
       mulliganStrategy=HumanAgent.HumanInputMulligan)

(これは一定のフォーマットを持つHumanAgent.HumanInputMulliganという関数を準備することが必要。詳細はマリガンもできるエージェントを参照のこと。)

ゲームを呼び出す関数play_set_of_games

第1、第2引数:エージェント
第3、第4引数:それぞれのエージェントがもつデッキ(空を指定すると、ランダムなデッキがセットされる。)
gameNumber:プレーする回数
debugLog:これをTrueにすると、プレーの内容をコンソール出力する。

たとえば、Vector1Vector2の対戦で、デッキはランダム、15回、プレー内容表示、を実行するには次のようにする。

   a,b,c = play_set_of_games(Vector1, Vector2, deck1=[], deck2=[], gameNumber=15, debugLog=True)

さらなるオプション\

HEROHPOPTION=30(初期のヒーローの体力)
P1MAXMANA=0, P2MAXMANA=0:(初期マナ-1)
P1HAND=3, P2HAN=3:初期枚数(後手に配られる+1枚はカウントしない)

を変えることもできる。たとえば

   a,b,c = play_set_of_games(Human1, Human2, deck1=[], deck2=[], gameNumber=1, debugLog=True, P1MAXMANA=10, P2MAXMANA=10)

返り値は3つで、第1エージェントの勝ち数、第2エージェントの勝ち数、引き分け数が代入される。