利用python实现英雄打怪物

李白和貂蝉打主宰和小兵

要求:
实验一:
主要实现功能:
A、模拟场景,某个英雄与某个怪物打斗,英雄可以对怪物释放技能,怪物也可以对英雄释放技能,双方每释放一个技能输出对方的血量值
B、模拟场景,两个英雄与某个怪物打斗,英雄可以对怪物释放技能,怪物也可以对英雄释放技能,
双方每释放一个技能输出对方的血量值(考虑怪物释放的技能是指向性技能还是群伤技能)
1、设计一个Hero类作为基类,基类中有哪些属性和方法自行定义
2、设计一个Libai类作为Hero类的派生类,类中有哪些属性和方法自行定义,设计一个Diaochan类作为Hero类的派生类,类中有哪些属性和方法自行定义
3、设计一个Gost类作为一个基类,基类中有哪些属性和方法自行定义
4、设计一个Xiaobing类作为派生类
设计一个Drag类作为派生类
5、设计一个技能类

import random as rn  # 引入随机数


class Skill(object):
    def __init__(self, name, value):
        self.name = name
        self.value = value


class Hero(object):
    def __init__(self, name, blood, skill):
        self.name = name
        self.blood = blood
        self.skill = skill

    def attack(self, gost):
        i = rn.randint(0, 1)
        gost.blood -= self.skill[i].value
        if gost.blood < 0:
            gost.blood = 0
        print(self.name, "使用", self.skill[i].name, "攻击了",
              gost.name, "造成了", self.skill[i].value, ,
              gost.name, "剩余", gost.blood, )

    def has_living(self):
        if self.blood > 0:
            return True
        return False


class Libai(Hero):
    def __init__(self):
        self.a = Skill('普通攻击', 20)
        self.s = Skill('青莲剑歌', 40)
        self.skill = [self.a, self.s]
        super().__init__('李白', 100, self.skill)

    def get_skill(self):
        return self.a


class Diaochan(Hero):
    def __init__(self):
        self.a = Skill('普通攻击', 10)
        self.s = Skill('落-红雨', 50)
        self.skill = [self.a, self.s]
        super().__init__('貂蝉', 100, self.skill)

    def get_skill(self):
        return self.a


class Gost(object):
    def __init__(self, name, blood, power):
        self.name = name
        self.blood = blood  
        self.power = power 

    def attack(self, hero):
        hero.blood -= self.power
        if hero.blood < 0:
            hero.blood = 0
        print(self.name, "攻击了", hero.name, "造成了", self.power,
              , hero.name, "剩余", hero.blood, )

    def has_living(self):
        if self.blood > 0:
            return True
        return False


class Xiaobing(Gost):
    def __init__(self):
        super().__init__("小兵", 100, 5)


class Drag(Gost):
    def __init__(self):
        super().__init__("大龙", 200, 20)
        self.angry = 40

    def attack(self, hero):
        if self.blood < 100:
            hero.blood -= self.angry
        else:
            hero.blood -= self.power
        if hero.blood < 0:
            hero.blood = 0
        if self.blood < 100:
            print(self.name, "使用主宰之怒,攻击了", hero.name, "造成了",
                  self.angry, , hero.name, "剩余", hero.blood, )
        else:
            print(self.name, "攻击了", hero.name, "造成了",
                  self.power, , hero.name, "剩余", hero.blood, )


if __name__ == '__main__':
    lb = Libai()
    dc = Diaochan()
    xb = Xiaobing()
    drag = Drag()
    # 这是李白和大龙的战斗
    print(lb.name + ' 的初始血量:' + str(lb.blood))
    print(drag.name + ' 的初始血量:' + str(drag.blood))

    while lb.has_living() and drag.has_living():
        if lb.has_living() and drag.has_living():
            lb.attack(drag)
        if lb.has_living() and drag.has_living():
            drag.attack(lb)

    if lb.has_living():
        print(lb.name + ' 胜利!')
    elif drag.has_living():
        print(drag.name + ' 胜利!')
    else:
        print("同归于尽")
    print("游戏结束")
    # 下面代码是李白和小兵的战斗
    # print(lb.name + ' 的初始血量:' + str(lb.blood))
    # print(xb.name + ' 的初始血量:' + str(xb.blood))
    #
    # while lb.has_living() and xb.has_living():
    # if lb.has_living() and xb.has_living():
    # lb.attack(xb)
    # if lb.has_living() and xb.has_living():
    # xb.attack(lb)
    #
    # if lb.has_living():
    # print(lb.name + ' 胜利!')
    # elif xb.has_living():
    # print(xb.name + ' 胜利!')
    # else:
    # print("同归于尽")
    # print("游戏结束")

还有各种不同的英雄和怪物的打法,只需修改变量和参数就好了

全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务