コード例 #1
0
ファイル: dominion.py プロジェクト: yawgmoth/Dominion
 def from_state(cls, state, ais=[], shuffle=False):
     players = []
     state_dict = json.loads(state)
     if len(ais) != state_dict["player_count"]:
         raise "Invalid game state for player count!"
     
     
     for ai, pstate in zip(ais, state_dict["players"]):
         ai.name = pstate["name"]
         players.append( Player(map(cards.card_by_name, pstate["deck"]), ai, pstate["name"]))
         players[-1].discard_pile = map(cards.card_by_name, pstate["discard_pile"])
         players[-1].hand = map(cards.card_by_name, pstate["hand"])
         players[-1].in_play = map(lambda c: cards.type_by_name(c["name"]).from_state(c["state"]), pstate["in_play"])
         players[-1].actions = pstate["actions"]
         players[-1].buys = pstate["buys"]
         players[-1].money = pstate["money"]
         players[-1].reset_stats = False
         if shuffle:
             random.shuffle(players[-1].deck)
     result = Game(players)
     
     result.stacks = map(lambda s: cards.Stack(cards.type_by_name(s["card"]), s["count"]), state_dict["stacks"])
     result.active_player = state_dict["active_player"]
     return result
コード例 #2
0
ファイル: dominion.py プロジェクト: yawgmoth/Dominion
 def __init__(self, players, saveat=-1, kingdom=None):
     self.players = players
     if kingdom:
         cardnames = kingdom.split(";")
         self.stacks = cards.get_default_stacks()
         for c in cardnames:
             count = 10
             card = c
             if ":" in c:
                 card, count = c.split(":")
             self.stacks.append(cards.base.Stack(cards.type_by_name(card), int(count)))
     else:
         self.stacks = cards.make_stacks()
     self.trash = []
     self.active_player = 0
     for p in self.players:
         p.set_game(self)
     self.saveat = int(saveat)