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):
|
class Defend(DEFCard):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Defend, self).__init__(2 ,"防禦")
|
super(Defend, self).__init__(2 ,"防禦")
|
||||||
def passive(self):
|
def passive(self, cur, ene, card):
|
||||||
print("防禦成功~")
|
pass
|
||||||
|
|
||||||
class Heal(OtherCard):
|
class Heal(OtherCard):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -82,29 +82,122 @@ class Rob(ATKCard):
|
|||||||
def active(self, cur, ene):
|
def active(self, cur, ene):
|
||||||
self.texts = [cur.name, ene.name]
|
self.texts = [cur.name, ene.name]
|
||||||
card = ene.drop()
|
card = ene.drop()
|
||||||
|
if not card:
|
||||||
|
print("SAD, {}沒東西可搶".format(ene.name))
|
||||||
|
return
|
||||||
cur.get(card)
|
cur.get(card)
|
||||||
self.texts.append(card)
|
self.texts.append(card)
|
||||||
|
|
||||||
print(self.text.format(*self.texts))
|
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):
|
class Bless(OtherCard):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Bless, self).__init__(11 ,"加護")
|
super(Bless, self).__init__(11 ,"加護")
|
||||||
def active(self, cur, ene):
|
def active(self, cur, ene):
|
||||||
cur.inc_hp(3)
|
cur.inc_hp(3)
|
||||||
cur.poison = 0
|
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 1 攻擊 對敵方造成兩點傷害 攻擊類卡片
|
||||||
x 2 防禦 抵擋攻擊類卡片 防禦類卡片
|
v 2 防禦 抵擋攻擊類卡片 防禦類卡片
|
||||||
v 3 治癒 回復兩點生命
|
v 3 治癒 回復兩點生命
|
||||||
v 4 補給 抽取兩張手牌
|
v 4 補給 抽取兩張手牌
|
||||||
x 5 強奪 從敵方手牌中選擇一張加入自己的手牌 攻擊類卡片
|
v 5 強奪 從敵方手牌中隨機一張加入自己的手牌 攻擊類卡片
|
||||||
x 6 奇襲 對敵方造成一點傷害,並使其隨機損失一張手牌 攻擊類卡片
|
v 6 奇襲 對敵方造成一點傷害,並使其隨機損失一張手牌 攻擊類卡片
|
||||||
x 8 洞悉 抵擋攻擊類卡片,並抽取一張手牌、抵擋強奪的效果 防禦類卡片
|
v 8 洞悉 抵擋攻擊類卡片,並抽取一張(2?)手牌、抵擋強奪的效果 防禦類卡片
|
||||||
x 9 妙策 從牌庫中隨機挑出三張卡片,選擇一張加入手牌
|
x 9 妙策 從牌庫中隨機挑出三張卡片,選擇一張加入手牌
|
||||||
v 10 掃射 對敵方造成零~五點傷害 攻擊類卡片
|
v 10 掃射 對敵方造成零~五點傷害 攻擊類卡片
|
||||||
v 11 加護 回復三點生命,並解除中毒
|
v 11 加護 回復三點生命,並解除中毒
|
||||||
v 12 劇毒 使敵方中毒:每個回合,玩家會損失一點生命
|
v 12 劇毒 使敵方中毒:每個回合,玩家會損失一點生命
|
||||||
x 14 反制 抵擋攻擊類卡片,並反彈其傷害和效果 防禦類卡片
|
v 14 反制 抵擋攻擊類卡片,並反彈其傷害和效果 防禦類卡片
|
||||||
x 15 狂亂 回復三點生命,並對敵方造成三點傷害 攻擊類卡片
|
v 15 狂亂 回復三點生命,並對敵方造成三點傷害 攻擊類卡片
|
||||||
"""
|
"""
|
4
Data.py
4
Data.py
@ -1,4 +1,4 @@
|
|||||||
Deck = [
|
Deck = [
|
||||||
[1, 2, 3, 4, 5] * 10,
|
[1, 2, 3] * 7 + [4, 5, 6] * 4 + [8, 9, 10, 11] * 2 + [12, 14, 15],
|
||||||
[1] * 10
|
[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,
|
3: Heal,
|
||||||
4: Supply,
|
4: Supply,
|
||||||
5: Rob,
|
5: Rob,
|
||||||
6: Card,
|
6: Suprise,
|
||||||
7: Card,
|
#7: Card,
|
||||||
8: Card,
|
8: Aware,
|
||||||
9: Card,
|
9: Plan,
|
||||||
10: Card,
|
10: Sweep,
|
||||||
11: Bless,
|
11: Bless,
|
||||||
12: Card,
|
12: Poison,
|
||||||
|
14: Counter,
|
||||||
|
15: Frenzy,
|
||||||
|
|
||||||
}
|
}
|
||||||
def DeckGen(card_ids):
|
def DeckGen(card_ids):
|
||||||
deck = []
|
deck = []
|
||||||
|
26
Game.py
26
Game.py
@ -5,20 +5,40 @@ class Game:
|
|||||||
self.first, self.second = first, second
|
self.first, self.second = first, second
|
||||||
self.first.draw(3)
|
self.first.draw(3)
|
||||||
self.second.draw(3)
|
self.second.draw(3)
|
||||||
|
self.turn = 0
|
||||||
def main(self):
|
def main(self):
|
||||||
while self.first.hp > 0 and self.second.hp > 0:
|
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):
|
for i, card in enumerate(self.first.hand):
|
||||||
print(i, ": ", card, sep="")
|
print(i, ": ", card, sep="")
|
||||||
|
|
||||||
# Use Cards
|
# Use Cards
|
||||||
while 1:
|
while 1:
|
||||||
use = input("請出牌的啦")
|
use = input("請出牌的啦(type p or pass to skip turn): ")
|
||||||
|
if use == "pass" or use == "p":
|
||||||
|
print("pass")
|
||||||
|
break
|
||||||
try:
|
try:
|
||||||
card = self.first.hand[int(use)]
|
card = self.first.hand[int(use)]
|
||||||
if isinstance(card, Card.ATKCard):
|
if isinstance(card, Card.ATKCard):
|
||||||
# Defence Handle
|
# Defence Handle
|
||||||
if self.second.defend(card):
|
if self.second.defend(card, self.first):
|
||||||
|
print("防禦成功~")
|
||||||
|
self.first.hand.remove(card)
|
||||||
break
|
break
|
||||||
elif isinstance(card, Card.DEFCard):
|
elif isinstance(card, Card.DEFCard):
|
||||||
print("防禦類卡片無法主動打出")
|
print("防禦類卡片無法主動打出")
|
||||||
|
13
Player.py
13
Player.py
@ -9,6 +9,8 @@ class Player:
|
|||||||
self.deck = deck[:]
|
self.deck = deck[:]
|
||||||
self.hand = []
|
self.hand = []
|
||||||
self.poison = 0
|
self.poison = 0
|
||||||
|
def __repr__(self):
|
||||||
|
return self.name + "(HP: " + str(self.hp) + ", 手牌: " + str(len(self.hand)) + ")"
|
||||||
def draw(self, num=1):
|
def draw(self, num=1):
|
||||||
if not self.deck:
|
if not self.deck:
|
||||||
return False
|
return False
|
||||||
@ -25,9 +27,9 @@ class Player:
|
|||||||
card = choice(self.hand)
|
card = choice(self.hand)
|
||||||
self.hand.remove(card)
|
self.hand.remove(card)
|
||||||
return 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))
|
def_cards = list(filter(lambda x: True if isinstance(x, DEFCard) else False, self.hand))
|
||||||
if not def_cards:
|
if not def_cards:
|
||||||
return False
|
return False
|
||||||
@ -36,10 +38,13 @@ class Player:
|
|||||||
try:
|
try:
|
||||||
use = input()
|
use = input()
|
||||||
card = def_cards[int(use)]
|
card = def_cards[int(use)]
|
||||||
card.passive()
|
card.passive(self, ene, use_card)
|
||||||
self.hand.remove(card)
|
self.hand.remove(card)
|
||||||
return True
|
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
|
return False
|
||||||
class Keieit(Player):
|
class Keieit(Player):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user