-
Notifications
You must be signed in to change notification settings - Fork 2
マリガンもできるエージェント
Kazushi Ahara edited this page Jul 16, 2021
·
3 revisions
まずエージェントクラスによるエージェントのつくり方でエージェントが作れているものとして、説明を始めます。
エージェントのクラスの__init__
関数(コンストラクタ)に変数を一つ増やします。
def __init__(self, myName: str, myFunction, myOption = [], myClass: CardClass = CardClass.HUNTER, rating =1000, mulliganStrategy=None ):
super().__init__(myName, myFunction, myOption, myClass, rating, mulliganStrategy=mulliganStrategy )
こうしておくと、'mulliganStrategy'に何か設定した時にだけ、マリガン対応をするようになります。エージェントクラスの中に
def AdorableCatMulligan(self, choiceCards):
# make cost 1 cards left
print("%s mulligan turn"%(self.name))
cards_to_mulligan = []
for num in range(len(choiceCards)):
if choiceCards[num].cost > 1:
cards_to_mulligan.append(choiceCards[num])
return cards_to_mulligan
のようなメソッドを追加します。choiceCards
というのが、マリガンの対象となるハンドのカードということで、この中から任意の枚数のカードを選んでreturn
するような関数を作ってください。ここではコストが2以上のカードをすべて選んでcards_to_mulligan
というリストに追加しています。エージェントクラスのほうは、このメソッドを充実させることが必要です。
マリガンを有効にしてエージェントでプレイするには、start.py
のほうで、
from agent_AdorableCat import AdorableCatAgent
AdorableCat=AdorableCatAgent("AdorableCat", AdorableCatAgent.AdorableCatAI, mulliganStrategy=AdorableCatAgent.AdorableCatMulligan)
のように、オプションとしてメソッド名を追加すれば大丈夫です。以上です。
参考までに、agent_Standard.py
に入っている二つのエージェント(Standard
とHuman
)にはマリガンのメソッドが作ってあります。参考にしてください。