New.EoD/Card.py
2018-08-26 22:51:31 +08:00

203 lines
6.0 KiB
Python
Raw 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:
ATK = 0
DEF = 1
OTHER = 2
SP_ATK = 3
SP_DEF = 4
SP_OTHER = 5
def __init__(self, cardtype):
self.type = cardtype
class ATKCard(Card):
def __init__(self, id, name):
super(ATKCard, self).__init__(Card.ATK)
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__(Card.DEF)
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__(Card.OTHER)
self.id = id
self.name = name
def __repr__(self):
return self.name + "(Other)"
def active(self):
pass
# Abstract Class Definition
class Attack(ATKCard):
def __init__(self):
super(Attack, self).__init__(1 ,"攻擊")
self.damage = 2
self.text = "可悲垃圾{}打了{}2"
def active(self, cur, ene):
self.texts = [cur.name, ene.name]
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 = "{}攻擊{}1並使其掉落了一張{}"
def active(self, cur, ene):
card = ene.drop()
self.texts = [cur.name, ene.name]
if not card:
self.text = "{}攻擊{}1"
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並回復了3"
def active(self, cur, ene):
self.texts = [cur.name, ene.name]
ene.inc_hp(0-self.damage)
cur.inc_hp(3)
print(self.text.format(*self.texts))
"""
v 1 攻擊 對敵方造成兩點傷害 攻擊類卡片
v 2 防禦 抵擋攻擊類卡片 防禦類卡片
v 3 治癒 回復兩點生命
v 4 補給 抽取兩張手牌
v 5 強奪 從敵方手牌中隨機一張加入自己的手牌 攻擊類卡片
v 6 奇襲 對敵方造成一點傷害,並使其隨機損失一張手牌 攻擊類卡片
v 8 洞悉 抵擋攻擊類卡片,並抽取一張(2?)手牌、抵擋強奪的效果 防禦類卡片
x 9 妙策 從牌庫中隨機挑出三張卡片,選擇一張加入手牌
v 10 掃射 對敵方造成零~五點傷害 攻擊類卡片
v 11 加護 回復三點生命,並解除中毒
v 12 劇毒 使敵方中毒:每個回合,玩家會損失一點生命
v 14 反制 抵擋攻擊類卡片,並反彈其傷害和效果 防禦類卡片
v 15 狂亂 回復三點生命,並對敵方造成三點傷害 攻擊類卡片
"""