决战紫禁之巅——类的应用

# 问题分析:
# 决战紫禁之巅有两个人物:西门吹雪(blood = 80, mana = 80)、叶倾城(blood = 120, mana = 50)
#     属性:
#     name  玩家名称
#     blood 玩家血量
#     mana  玩家蓝量
#     方法:
#     ●stick()捅对方一刀,对方掉血10滴,蓝量减少5
#     ●cut()砍对方一刀,对方掉血15滴,蓝量减少10
#     ●medicine() 吃一颗药, 补血10滴,蓝量减少15
#     ●dead() 如果血量小于等于0,则判定死亡,直接打印状态,结束游戏
#     ●__str__打印玩家状态。

class Character:
    def __init__(self, name, blood, mana):
        self.name = name
        self.blood = blood
        self.mana = mana

    def stick(self):
        print("%s刺了对方一刀,对方掉了10滴血,自身蓝量减5点" % self.name)
        self.mana = self.mana - 5

    def cut(self):
        print("%s砍了对方一刀,对方掉了15滴血,自身蓝量减10点" % self.name)
        self.mana = self.mana - 10

    def medicine(self):
        print("%s吃了口药,恢复10滴血,自身蓝量减15点" % self.name)
        self.mana = self.mana - 15

    def dead(self):
        if self.blood <= 0:
            print("%s血量为0,已经死亡,游戏结束" % self.name)
            exit(0)

    def __str__(self):
        return "%s的血量为%d,蓝量为%d。" % (self.name, self.blood, self.mana)


def s_round():
    behavior = input("请西门吹雪出招")
    if behavior == "stick":
        if simon.mana >= 5:
            simon.stick()
            yale.blood = yale.blood - 10
        else:
            print('你的蓝量过于不够,只能挨打了')

    if behavior == "cut":
        if simon.mana >= 10:
            simon.cut()
            yale.blood = yale.blood - 15
        elif 5 <= simon.mana < 10:
            print("你的蓝量不够砍人,请重新选择")
            s_round()
        else:
            print('你的蓝量过于不够,只能挨打了')

    if behavior == "medicine":
        if simon.mana >= 15:
            simon.medicine()
            simon.blood = simon.blood + 10
        elif 5 <= simon.mana < 15:
            print("你的蓝量不够砍人,请重新选择")
            s_round()
        else:
            print('你的蓝量过于不够,只能挨打了')

    yale.dead()


def y_round():
    behavior = input("请叶倾城出招")
    if behavior == "stick":
        if yale.mana >= 5:
            yale.stick()
            simon.blood = simon.blood - 10
        else:
            print('你的蓝量过于不够,只能挨打了')

    if behavior == "cut":
        if yale.mana >= 10:
            yale.cut()
            simon.blood = simon.blood - 15
        elif 5 <= yale.mana < 10:
            print("你的蓝量不够砍人,请重新选择")
            y_round()
        else:
            print('你的蓝量过于不够,只能挨打了')

    if behavior == "medicine":
        if yale.mana >= 15:
            yale.medicine()
            yale.blood = yale.blood + 10
        elif 5 <= yale.mana < 15:
            print("你的蓝量不够回血,请重新选择")
            y_round()
        else:
            print('你的蓝量过于不够,只能挨打了')

    simon.dead()


print("欢迎来到决战紫禁之巅,先手为吹雪,后手为倾城。stick为刺,cut为砍,medicine为吃药。")
simon = Character("西门吹雪", 80, 80)
yale = Character("叶倾城", 120, 60)
while True:
    s_round()
    y_round()
    print(simon)
    print(yale)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值