from Data import Deck from DeckGen import CardGen from Card import DEFCard from random import choice class Player: def __init__(self, name, deck): self.hp = 15 self.name = name self.deck = deck[:] self.hand = [] self.poison = 0 def __repr__(self): return self.name + "(HP: " + str(self.hp) + ", 手牌: " + str(len(self.hand)) + ")" def draw(self, num=1): if not self.deck: return False for _ in range(num): self.hand.append(CardGen(self.deck.pop(0))) return self.hand[-1] def inc_hp(self, hp): self.hp += hp def get(self, card): self.hand.append(card) def drop(self): if not self.hand: return False card = choice(self.hand) self.hand.remove(card) return card def defend(self, use_card, ene): print("對手使用了{}".format(use_card)) def_cards = list(filter(lambda x: True if isinstance(x, DEFCard) else False, self.hand)) if not def_cards: return False for i, card in enumerate(def_cards): print(i, ": ", card, sep="") try: use = input() card = def_cards[int(use)] card.passive(self, ene, use_card) self.hand.remove(card) return True except Exception as e: template = "An exception of type {0} occurred. Arguments:\n{1!r}" message = template.format(type(e).__name__, e.args) print(message) return False class Keieit(Player): def __init__(self): super(Keieit, self).__init__("圭月", Deck[0]) class Rabbit(Player): def __init__(self): super(Rabbit, self).__init__("小兔", Deck[1])