プレーヤーのつくりかた - aharalabMeiji/fireplaceAharaLab GitHub Wiki

ここは旧ページです。エージェントクラスによるエージェントのつくり方へ行ってください。

以下は古いバージョンの仕様です。新しい仕様のほうを参照してください。

  1. まいかず、プレーヤ(以下ではエージェントと呼ぶことにします)専用のファイルを作ってください。クラスとか作る必要はありません。

  2. エージェントの名前を決めてください。ここではたとえばAdorableCatであるとします。新しく作ったファイルのファイル名は「agent_AdorableCat.py」にしてください。(これはマストではないのですが、そろえておくと、他の人がわかりやすいと思います。)

  3. 関数を一つ作ります。

    1:     import random
    2:     from utils import ExceptionPlay, Candidate, executeAction, getCandidates
    3:     from agent_Standard import postAction
    4:  
    5:     def AdorableCatAI(game: Game, option=[], debugLog=False):
    6:         while True:
    7:             myCandidate = getCandidates(game)
    8:             if len(myCandidate)>0:
    9:                 myChoice = random.choice(myCandidate)
    10:                executeAction(thisgame, myChoice, debugLog=debugLog)
    11:                postAction(player)
    12:            else:
    13:                return
    

とりあえずこれだけ書いておいて、あとで中身を作ります。optionとdebugLogは一応引数として(無意味であっても)入れておいてください。

  1. start.pyをいじります。main()関数をみつけてください。20行目あたりの空いているところに、

     from agent_AngryCat import AdorableCatAI
     AdorableCatPlayer=Agent("AdorableCat", AdorableCatAI, myOption=[], debugLog=False)
    

のように書いておいて、33行目あたりを

    play_set_of_games(Human, AdorableCatPlayer, gameNumber=1, debugLog=False) 

としておくと、AdorableCatPlayerと人間との対戦ができるようになります。(各行の書き始めのインデント(桁下げ)をそろえる必要があります)

  1. 上記プログラム中、7行目でmyCandidateという変数の中に「取りうる行動すべてのリスト」が代入されます。上記プログラム9行目では「ランダムに選ぶ」ことがおこなわれていますが、ここを変更して賢いエージェントを作ってください。また10行目でアクションの実行、11行めはアクション後の追加アクション(追加でもらえるカードをチョイスしたりする)を自動的に行う命令です。

  2. 上記でファイル名agent_AdorableCat.pyと関数名AdorableCatAIとエージェント変数名AdorableCatPlayerは区別したほうがいいようです。なお、エージェント名は"AdorableCat"となっていますが、「自己対戦させる」ときには"AdorableCat1""AdorableCat2"のように区別してください。