プレーヤーのつくりかた - aharalabMeiji/fireplaceAharaLab GitHub Wiki
ここは旧ページです。エージェントクラスによるエージェントのつくり方へ行ってください。
以下は古いバージョンの仕様です。新しい仕様のほうを参照してください。
-
まいかず、プレーヤ(以下ではエージェントと呼ぶことにします)専用のファイルを作ってください。クラスとか作る必要はありません。
-
エージェントの名前を決めてください。ここではたとえばAdorableCatであるとします。新しく作ったファイルのファイル名は「
agent_AdorableCat.py
」にしてください。(これはマストではないのですが、そろえておくと、他の人がわかりやすいと思います。) -
関数を一つ作ります。
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は一応引数として(無意味であっても)入れておいてください。
-
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と人間との対戦ができるようになります。(各行の書き始めのインデント(桁下げ)をそろえる必要があります)
-
上記プログラム中、7行目で
myCandidate
という変数の中に「取りうる行動すべてのリスト」が代入されます。上記プログラム9行目では「ランダムに選ぶ」ことがおこなわれていますが、ここを変更して賢いエージェントを作ってください。また10行目でアクションの実行、11行めはアクション後の追加アクション(追加でもらえるカードをチョイスしたりする)を自動的に行う命令です。 -
上記でファイル名
agent_AdorableCat.py
と関数名AdorableCatAI
とエージェント変数名AdorableCatPlayer
は区別したほうがいいようです。なお、エージェント名は"AdorableCat"
となっていますが、「自己対戦させる」ときには"AdorableCat1"
、"AdorableCat2"
のように区別してください。