Standard card completed
This commit is contained in:
parent
046ddb0657
commit
39792f4b48
109
Card.py
109
Card.py
@ -60,8 +60,8 @@ class Attack(ATKCard):
|
||||
class Defend(DEFCard):
|
||||
def __init__(self):
|
||||
super(Defend, self).__init__(2 ,"防禦")
|
||||
def passive(self):
|
||||
print("防禦成功~")
|
||||
def passive(self, cur, ene, card):
|
||||
pass
|
||||
|
||||
class Heal(OtherCard):
|
||||
def __init__(self):
|
||||
@ -82,29 +82,122 @@ class Rob(ATKCard):
|
||||
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 攻擊 對敵方造成兩點傷害 攻擊類卡片
|
||||
x 2 防禦 抵擋攻擊類卡片 防禦類卡片
|
||||
v 2 防禦 抵擋攻擊類卡片 防禦類卡片
|
||||
v 3 治癒 回復兩點生命
|
||||
v 4 補給 抽取兩張手牌
|
||||
x 5 強奪 從敵方手牌中選擇一張加入自己的手牌 攻擊類卡片
|
||||
x 6 奇襲 對敵方造成一點傷害,並使其隨機損失一張手牌 攻擊類卡片
|
||||
x 8 洞悉 抵擋攻擊類卡片,並抽取一張手牌、抵擋強奪的效果 防禦類卡片
|
||||
v 5 強奪 從敵方手牌中隨機一張加入自己的手牌 攻擊類卡片
|
||||
v 6 奇襲 對敵方造成一點傷害,並使其隨機損失一張手牌 攻擊類卡片
|
||||
v 8 洞悉 抵擋攻擊類卡片,並抽取一張(2?)手牌、抵擋強奪的效果 防禦類卡片
|
||||
x 9 妙策 從牌庫中隨機挑出三張卡片,選擇一張加入手牌
|
||||
v 10 掃射 對敵方造成零~五點傷害 攻擊類卡片
|
||||
v 11 加護 回復三點生命,並解除中毒
|
||||
v 12 劇毒 使敵方中毒:每個回合,玩家會損失一點生命
|
||||
x 14 反制 抵擋攻擊類卡片,並反彈其傷害和效果 防禦類卡片
|
||||
x 15 狂亂 回復三點生命,並對敵方造成三點傷害 攻擊類卡片
|
||||
v 14 反制 抵擋攻擊類卡片,並反彈其傷害和效果 防禦類卡片
|
||||
v 15 狂亂 回復三點生命,並對敵方造成三點傷害 攻擊類卡片
|
||||
"""
|
4
Data.py
4
Data.py
@ -1,4 +1,4 @@
|
||||
Deck = [
|
||||
[1, 2, 3, 4, 5] * 10,
|
||||
[1] * 10
|
||||
[1, 2, 3] * 7 + [4, 5, 6] * 4 + [8, 9, 10, 11] * 2 + [12, 14, 15],
|
||||
[1, 2, 3] * 7 + [4, 5, 6] * 4 + [8, 9, 10, 11] * 2 + [12, 14, 15]
|
||||
]
|
15
DeckGen.py
15
DeckGen.py
@ -5,13 +5,16 @@ cards = {
|
||||
3: Heal,
|
||||
4: Supply,
|
||||
5: Rob,
|
||||
6: Card,
|
||||
7: Card,
|
||||
8: Card,
|
||||
9: Card,
|
||||
10: Card,
|
||||
6: Suprise,
|
||||
#7: Card,
|
||||
8: Aware,
|
||||
9: Plan,
|
||||
10: Sweep,
|
||||
11: Bless,
|
||||
12: Card,
|
||||
12: Poison,
|
||||
14: Counter,
|
||||
15: Frenzy,
|
||||
|
||||
}
|
||||
def DeckGen(card_ids):
|
||||
deck = []
|
||||
|
26
Game.py
26
Game.py
@ -5,20 +5,40 @@ class Game:
|
||||
self.first, self.second = first, second
|
||||
self.first.draw(3)
|
||||
self.second.draw(3)
|
||||
self.turn = 0
|
||||
def main(self):
|
||||
while self.first.hp > 0 and self.second.hp > 0:
|
||||
print("輪到{}了\n{}抽到了{}\n這是{}現在的手牌:".format(self.first.name, self.first.name, self.first.draw(), self.first.name))
|
||||
self.turn += 1
|
||||
# Poison Check
|
||||
if self.first.poison:
|
||||
print("{}因劇毒損失了{}".format(self.first.name, self.first.poison))
|
||||
self.first.inc_hp(0-self.first.poison)
|
||||
if self.first.hp <= 0:
|
||||
print("{}倒下ㄌ".format(self.first.name))
|
||||
break
|
||||
print("========Turn {} {}========".format(self.turn//2+1, "先攻" if self.turn%2 else "後攻"))
|
||||
draw = self.first.draw()
|
||||
if not draw:
|
||||
print("{}抽到了死神 吧".format(self.first.name))
|
||||
self.first.inc_hp(-999) # 讓他死啦
|
||||
break
|
||||
print("玩家{}\n{}抽到了{}\n這是{}現在的手牌:".format(self.first, self.first.name, draw, self.first.name))
|
||||
for i, card in enumerate(self.first.hand):
|
||||
print(i, ": ", card, sep="")
|
||||
|
||||
# Use Cards
|
||||
while 1:
|
||||
use = input("請出牌的啦")
|
||||
use = input("請出牌的啦(type p or pass to skip turn): ")
|
||||
if use == "pass" or use == "p":
|
||||
print("pass")
|
||||
break
|
||||
try:
|
||||
card = self.first.hand[int(use)]
|
||||
if isinstance(card, Card.ATKCard):
|
||||
# Defence Handle
|
||||
if self.second.defend(card):
|
||||
if self.second.defend(card, self.first):
|
||||
print("防禦成功~")
|
||||
self.first.hand.remove(card)
|
||||
break
|
||||
elif isinstance(card, Card.DEFCard):
|
||||
print("防禦類卡片無法主動打出")
|
||||
|
13
Player.py
13
Player.py
@ -9,6 +9,8 @@ class Player:
|
||||
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
|
||||
@ -25,9 +27,9 @@ class Player:
|
||||
card = choice(self.hand)
|
||||
self.hand.remove(card)
|
||||
return card
|
||||
def defend(self, card):
|
||||
def defend(self, use_card, ene):
|
||||
|
||||
print("對手使用了{}".format(card))
|
||||
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
|
||||
@ -36,10 +38,13 @@ class Player:
|
||||
try:
|
||||
use = input()
|
||||
card = def_cards[int(use)]
|
||||
card.passive()
|
||||
card.passive(self, ene, use_card)
|
||||
self.hand.remove(card)
|
||||
return True
|
||||
except:
|
||||
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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user