New.EoD/Card.py

249 lines
7.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class Card:
def __init__(self):
pass
class ATKCard(Card):
def __init__(self, id, name):
super(ATKCard, self).__init__()
self.id = id
self.name = name
self.damage = 0
self.text = ""
self.texts = []
def __repr__(self):
#return str(self.id) + ". " + self.name + "(ATK)"
return self.name + "(ATK)"
def active(self, cur, ene):
pass
class DEFCard(Card):
def __init__(self, id, name):
super(DEFCard, self).__init__()
self.id = id
self.name = name
def __repr__(self):
return self.name + "(DEF)"
def passive(self):
pass
class OtherCard(Card):
def __init__(self, id, name):
super(OtherCard, self).__init__()
self.id = id
self.name = name
def __repr__(self):
return self.name + "(Other)"
def active(self):
pass
class SPATKCard(ATKCard):
def __init__(self, id, name):
super(SPATKCard, self).__init__(id, name)
def __repr__(self):
return self.name + "(SP.ATK)"
class SPDEFCard(DEFCard):
def __init__(self, id, name):
super(SPDEFCard, self).__init__(id, name)
def __repr__(self):
return self.name + "(SP.DEF)"
# Abstract Class Definition
class Attack(ATKCard):
def __init__(self):
super(Attack, self).__init__(1 ,"攻擊")
self.damage = 2
self.text = "可悲垃圾{}打了{}{}"
def active(self, cur, ene):
self.texts = [cur.name, ene.name, self.damage]
if not ene.inc_hp(0-self.damage):
print(self.text.format(*self.texts))
class Defend(DEFCard):
def __init__(self):
super(Defend, self).__init__(2 ,"防禦")
def passive(self, cur, ene, card):
pass
class Heal(OtherCard):
def __init__(self):
super(Heal, self).__init__(3 ,"治癒")
def active(self, cur, ene):
cur.inc_hp(2)
class Supply(OtherCard):
def __init__(self):
super(Supply, self).__init__(4 ,"補給")
def active(self, cur, ene):
cur.draw(2)
class Rob(ATKCard):
def __init__(self):
super(Rob, self).__init__(5 ,"搶奪")
self.text = "{}{}那搶走了{}"
def active(self, cur, ene):
self.texts = [cur.name, ene.name]
card = ene.drop()
if not card:
print("SAD, {}沒東西可搶".format(ene.name))
return
cur.get(card)
self.texts.append(card)
print(self.text.format(*self.texts))
class Suprise(ATKCard):
def __init__(self):
super(Suprise, self).__init__(6 ,"奇襲")
self.damage = 1
self.text = "{}攻擊{}{},並使其掉落了一張{}"
def active(self, cur, ene):
card = ene.drop()
self.texts = [cur.name, ene.name, self.damage]
if not card:
self.text = "{}攻擊{}{}"
else:
self.texts.append(card)
ene.inc_hp(0-self.damage)
print(self.text.format(*self.texts))
class Aware(DEFCard):
def __init__(self):
super(Aware, self).__init__(8 ,"傷心")
def passive(self, cur, ene, card):
cur.draw(1)
print("好氣喔還抽了張卡片")
class Plan(OtherCard):
def __init__(self):
super(Plan, self).__init__(9 ,"妙策")
def active(self, cur, ene):
from random import sample
from DeckGen import DeckGen
l = DeckGen(sample(cur.deck, 3))
for i, card in enumerate(l):
print(i, ": ", card, sep="")
while 1:
try:
choose = int(input())
cur.get(l[choose])
print("{}獲得{}".format(cur.name, l[choose]))
cur.deck.remove(l[choose].id)
break
except:
pass
class Sweep(ATKCard):
def __init__(self):
super(Sweep, self).__init__(10 ,"掃射的啦")
self.damage = 0
self.text = "可悲垃圾{}打了{}{}"
def active(self, cur, ene):
from random import randint
self.damage = randint(0, 5)
self.texts = [cur.name, ene.name, self.damage]
ene.inc_hp(0-self.damage)
print(self.text.format(*self.texts))
class Bless(OtherCard):
def __init__(self):
super(Bless, self).__init__(11 ,"加護")
def active(self, cur, ene):
cur.inc_hp(3)
cur.poison = 0
class Poison(OtherCard):
def __init__(self):
super(Poison, self).__init__(12 ,"毒死你")
def active(self, cur, ene):
ene.poison += 1
print("毒死你生效ㄌ")
class Counter(DEFCard):
def __init__(self):
super(Counter, self).__init__(14 ,"反打一波")
def passive(self, cur, ene, card):
print("反彈了傷害和效果:")
"""if isinstance(card, Rob):
pass
elif isinstance(card, Suprise):
pass
elif isinstance(card, Frenzy):
cur.inc_hp(3)
ene.inc_hp(-3)
else:
ene.inc_hp(0-card.damage)"""
card.active(cur, ene)
class Frenzy(ATKCard):
def __init__(self):
super(Frenzy, self).__init__(15, "星爆氣流斬")
self.damage = 3
self.text = "可悲垃圾{}打了{}{}並回復了3"
def active(self, cur, ene):
self.texts = [cur.name, ene.name, self.damage]
ene.inc_hp(0-self.damage)
cur.inc_hp(3)
print(self.text.format(*self.texts))
class Guo1(SPDEFCard):
def __init__(self):
super(Guo1, self).__init__(101, "空間之鍊(門)")
def passive(self, cur, ene, card):
print("無效敵方能力並將1張{}加入手中".format(card))
cur.get(card)
class Guo2(OtherCard):
def __init__(self):
super(Guo2, self).__init__(102, "空間之鍊(殼)")
def active(self, cur, ene):
print("下2個敵方的回合{}將不會受到傷害".format(cur.name))
cur.guard = 2
class Guo3(SPATKCard):
def __init__(self):
super(Guo3, self).__init__(103, "空間之鍊(滅)")
self.damage = 5
def active(self, cur, ene):
print("對敵方造成5點傷害並使敵方損失2張手牌")
ene.drop(2)
ene.inc_hp(0-self.damage)
class Rabbit1(SPATKCard):
def __init__(self):
super(Rabbit1, self).__init__(201, "科學無用論(高速砍擊)")
self.damage = 3
def active(self, cur, ene):
ene.inc_hp(0-self.damage)
print("優先於一切防禦能力的3點傷害攻擊")
class Rabbit2(OtherCard):
def __init__(self):
super(Rabbit2, self).__init__(202, "科學無用論(力量增幅)")
def active(self, cur, ene):
cur.boost = 3
print("下3個回合對敵方造成的傷害+1")
class Rabbit3(SPATKCard):
def __init__(self):
super(Rabbit3, self).__init__(203, "科學無用論(終焉一擊)")
self.damage = 5
def active(self, cur, ene):
ene.inc_hp(0-self.damage)
print("優先於一切防禦能力的5點傷害攻擊")
"""
101 空間之鍊(門)x2無效敵方能力並將1張相同卡牌加入手中 SPDEF
102 空間之鍊(殼)x2下2個敵方的回合不會受到傷害 OTHER
103 空間之鍊(滅)x1對敵方造成5點傷害並使敵方損失2張手牌 SPATK
201 科學無用論(高速砍擊)x3優先於一切防禦能力的3點傷害攻擊 SPATK
202 科學無用論(力量增幅)x3下3個回合對敵方造成的傷害+1 OTHER
203 科學無用論(終焉一擊)x1優先於一切防禦能力的5點傷害攻擊 SPATK
"""