Python新手经典案例之奥特曼打怪兽-lol版

 本人新人入门Python 老师布置的作业打怪兽,本人参考了大佬们的杰作然后完成了下方的适合新手入门的版本,与大家分享!

第一步:新建Python包,创建文件

 

 

注意:需要有_init_.py这个py文件,里面可以为空,但是一定要有。

第二步:写个简单的武器商店Equipment.py

不多说,直接上代码。因为比较基础,也没啥好讲的。都是最基础的。

# EquipmentStore 装备商店  name 名字 attack 攻击 damage伤害 defensive 防御 
# attackSpeed 攻速 movingSpeed移速 price价格 EquipmentAttribute的装备属性

class Equipment_Attribute:
    def __init__(self, name, attack, defensive, attackSpeed, movingSpeed, price):  
        self.price = price
        self.movingSpeed = movingSpeed
        self.attackSpeed = attackSpeed
        self.defensive = defensive
        self.attack = attack
        self.name = name

    # def show(self):
    #     print("%s 攻击:%s 防御:%s 攻速:%s 移速:%s 价格:%s" % (
    #         self.name, self.attack, self.defensive, 
    #         self.attackSpeed, self.movingSpeed, self.price))


s1 = Equipment_Attribute("攻速鞋", 0, 0, 0.35, 45, 1100)
s2 = Equipment_Attribute("布甲鞋", 0, 20, 0, 45, 1100)
s3 = Equipment_Attribute("短剑", 10, 0, 0, 0, 350)

第三步:写英雄部分内容,Hero.py

import time
import random
import LOL.Equipment


class YaSuo:
    def __init__(self, Name, HP, MP, Attack):
        self.Name = Name
        self.HP = HP
        self.MP = MP
        self.Attack = Attack

    def LinesYS(self):  # 亚索的台词
        say = random.randint(0, 9)
        taici = ['死亡如风,常伴吾身。',
                 '长路漫漫,唯剑作伴。',
                 '吾之荣耀,离别已久。',
                 '明日安在,无人能允。',
                 '且随疾风前行,身后亦须留心。',
                 '此剑之势,愈斩愈烈。',
                 '仁义道德,也是一种奢侈。',
                 '回首往昔,更进一步。',
                 '我将遵循此道,直至终结。',
                 '荣耀存于心,而非流于形。'
                 ]
        print("疾风剑豪--亚索:   "+taici[say])

    # 增加Attack:伤害 as 攻击力
    def Add_Attack(self):
        s3 = LOL.Equipment.s3
        if s3.name:
            print(f"{self.Name}已成功购买一柄短剑")
            self.Attack += s3.attack

    def PuTong_Attack(self):  # 普通攻击方法
        print(f"{self.Name}平A!")
        self.Add_Attack()
        return self.Attack

    def SkillQ(self):
        print(f"{self.Name}释放技能Q:斩钢闪 --哈塞给--")
        time.sleep(1)
        print(f"{self.Name}技能Q:斩钢闪-->命中")
        print(f"{self.Name}对{xz.Name}造成{self.Attack * 2}的HP伤害")
        return self.Attack * 2

    def SkillR(self):
        print(f"{self.Name}释放技能R:狂风绝息斩")
        time.sleep(1)
        print(f"{self.Name} --索雷阿给动--")
        print(f"{self.Name}对{xz.Name}造成{self.Attack * 4}的HP伤害")
        return self.Attack * 4

    def __str__(self):  # 内置魔法方法,输出对象时输出
        bar_length = 20
        h = '#' * int(self.HP / 100.0 * bar_length)
        s = '-' * (bar_length - len(h))
        h2 = '#' * int(self.MP / 100.0 * bar_length)
        s2 = '-' * (bar_length - len(h2))
        return "%s HP: [%s] %d   %s MP: [%s] %d" % (self.Name, h + s, self.HP, self.Name, h2 + s2, self.MP)

class LiQing:
    def __init__(self, Name, HP, MP, Attack):
        self.Name = Name
        self.HP = HP
        self.MP = MP
        self.Attack = Attack

    def LinesMS(self):  # 盲僧的台词
        say = random.randint(0, 9)
        taici = ['控制自己,掌控敌人。',
                 '你今天不会取得胜利的。',
                 '我用双手成就你的梦想。',
                 '如果暴力不是为了杀戮 那将毫无意义。',
                 '双眼失明丝毫不影响我追捕敌人,因为我能闻到他们身上的臭味 。',
                 '哪里需要我呢。',
                 '他们心跳加快。',
                 '我会识破这一切。',
                 '找到自己的战场。',
                 '勇往直前。'
                 ]
        print("盲僧——李青:   "+taici[say])

    def Add_Attack(self):
        s3 = LOL.Equipment.s3
        if s3.name:
            print(f"{self.Name}已成功购买一柄短剑")
            self.Attack += s3.attack

    def PuTong_Attack(self):  # 普通攻击方法
        print(f"{self.Name}平A!")
        self.Add_Attack()
        print(f"{self.Name}对{ys.Name}造成{self.Attack}的HP伤害")
        return self.Attack

    def SkillQ(self):
        print(f"{self.Name}释放技能Q:天音波/回音击 --Echo--")
        time.sleep(1)
        print(f"{self.Name}技能Q:天音波/回音击-->命中")
        print(f"{self.Name}对{ys.Name}造成{self.Attack * 2}的HP伤害")
        return self.Attack * 2

    def SkillR(self):
        print(f"{self.Name}释放技能R:猛龙摆尾")
        time.sleep(1)
        print(f"{self.Name} --一库--")
        print(f"{self.Name}对{ys.Name}造成{self.Attack * 4}的HP伤害")
        return self.Attack * 4

    def __str__(self):  # 内置魔法方法,输出对象时输出
        bar_length = 20
        h = '#' * int(self.HP / 100.0 * bar_length)
        s = '-' * (bar_length - len(h))
        h2 = '#' * int(self.MP / 100.0 * bar_length)
        s2 = '-' * (bar_length - len(h2))
        return "  %s  HP: [%s] %d   %s MP: [%s] %d" % (self.Name, h + s, self.HP, self.Name, h2 + s2, self.MP)


ys = YaSuo("疾风剑豪--亚索", 100, 100, 0.35)
xz = LiQing("盲僧——李青", 100, 100, 0.35)

写的极为简单,但是可以无限加,才学的我写这个已经很努力的在CSDN了。哈哈。全是最基础的点,看不懂就直接查知识点怎么用的。

第四步:写main(),写运行过程,前面的都是在给这个做准备!

写的跟实际上的还有是区别,但是我是为了学习,表达意思到位就ok。

# coding=utf-8
import time
import random
import LOL.Hero

print("\033[1;37;40m " + '-' * 20, '《英雄联盟》', '-' * 20 + "\033[0m")
print('请选择你的英雄:')
print('\t1.疾风剑豪——亚索')
print('\t2.盲僧——李青')
player_choose = input('请选择[1-2]:')
print('-' * 66)
if player_choose == '1':
    print('你已经选择了1,你将以->  疾风剑豪——亚索  <-的身份来进行游戏!')
elif player_choose == '2':
    print('你已经选择了2,你将以你将以->  盲僧——李青  <-的身份来进行游戏!')
else:
    print('你的输入有误,系统将自动分配身份,你将以->  疾风剑豪 亚索  <-的身份来进行游戏!')

num = 0
ys = LOL.Hero.YaSuo("疾风剑豪--亚索", 100, 100, 0.35)
xz = LOL.Hero.LiQing("盲僧——李青", 100, 100, 0.35)
print("\033[1;37;40m--------------------欢迎来到英雄联盟--------------------\033[0m")
time.sleep(1)
print("\033[1;37;40m-------------------敌军还有30秒到达战场------------------\033[0m")
time.sleep(1)
print("\033[1;37;40m------------------------全军出击------------------------\033[0m")
time.sleep(1)
ys.LinesYS()
xz.LinesMS()
while True:
    if ys.HP > 0 and xz.HP > 0:
        num += 1
        time.sleep(1)
        print(f"\033[1;37;40m============第{num}回合=============\033[0m")
        time.sleep(1)
        print(ys)  # 输出对象,自动执行了上面的__str__魔法方法
        time.sleep(1)
        print(xz)
        a = random.randint(0, 100)  # 随机攻击回合
        if a > 80:  # 如果>60压缩攻击 ,瞎子掉血
            xz.HP -= ys.PuTong_Attack()
        elif 80 >= a > 60:
            ys.HP -= xz.PuTong_Attack()
        elif 60 >= a > 40:  # 如果是60-40压缩放技能q,瞎子掉血
            xz.HP -= ys.SkillQ()
        elif 40 >= a > 20:  # 如果是40-20瞎子放技能q,压缩掉血
            ys.HP -= xz.SkillQ()
        elif 20 >= a > 10:  # 如果是10-20压缩放技能r,瞎子掉血
            xz.HP -= ys.SkillR()
        else:
            ys.HP -= xz.SkillR()
    else:
        if xz.HP <= 0:  # 瞎子血为0,压缩获胜
            time.sleep(1)
            print(f"\033[1;32;41m     %s WIN!!!!     \033[0m" % ys.Name)
            time.sleep(1)
            print("\033[1;37;40m " + '-' * 20, 'GAME OVER', '-' * 20 + "\033[0m")
            break
        else:
            time.sleep(1)
            print(f"\033[1;32;41m    %s WIN!!!!    \033[0m" % xz.Name)
            time.sleep(1)
            print("\033[1;37;40m " + '-' * 20, 'GAME OVER', '-' * 20 + "\033[0m")
            break
ys.LinesYS()
xz.LinesMS()

 其实写的有点花里胡哨的,哈哈哈,攻击靠运气,买东西不用给钱,哈哈,平a到就是赚到,a一下送把短剑,我也是人才!后面继续改进!

最后一步:对着main.py右键-run 

 其实还有很多代码不正规的地方,但是这是我写的第一个项目式代码。允许我姑且称她为一个项目,很简单,很基础,学了很多基础知识点,而且很有成就感,也感谢CSDN的前辈们对我的隔空指导!我会加油的!


最后跟英语跟我一样差的人,推荐个插件,哈哈,Tran***,后面几个字母记不到了。886!

最后最后,真的最后了,有人知道我封面的那个奥特曼名字是什么吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it's all you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值