华为云高校联盟活动:Python模拟MOBA手游~防御塔

举报
小Bob来啦 发表于 2021/04/29 00:06:45 2021/04/29
【摘要】 领袖和跟风者的区别就在于创新。——乔布斯呼,大家好啊,前几天参加了华为云开发者大会,也去了TVP数据冰与火之歌的大会,总的收获蛮丰富的。这里继续分享之前的华为云青年班MOBA手游活动。这一节是防御塔,防御塔的机制在游戏中也只能算一个工具人,但作用绝非一个工具人所能比拟。关于防御塔,在游戏的不同阶段,玩家围绕防御塔可以有多种战术,充分利用防御塔的优势有时可以有意想不到的效果。比如防御塔可以清理...

领袖和跟风者的区别就在于创新。——乔布斯

呼,大家好啊,前几天参加了华为云开发者大会,也去了TVP数据冰与火之歌的大会,总的收获蛮丰富的。

这里继续分享之前的华为云青年班MOBA手游活动。

这一节是防御塔,防御塔的机制在游戏中也只能算一个工具人,但作用绝非一个工具人所能比拟。

关于防御塔,在游戏的不同阶段,玩家围绕防御塔可以有多种战术,充分利用防御塔的优势有时可以有意想不到的效果。比如防御塔可以清理兵线;提供视野,特别是中路的一塔;保护我方英雄等等。

这一节包括三个小节,分别是防御塔矗立;防御塔反制;防御塔闪耀。

第一节呢,和之前一样,为数据初始化,包括数据的输入。

第二节主要是针对防御塔进行防御,进而攻击敌方英雄或小兵。代码中要注意防御塔攻击并非一次计算,而是需要进行累积计算。

第三节对防御塔的攻击增加伤害比率进而增加伤害,同时敌方英雄或小兵也得承受更高的伤害。


To:本次活动文章写完后小编准备开始为大家带来一篇关于小白电脑知识的入门篇,嘻嘻,相信很快就会和大家见面哦。

1.防御塔矗立


源代码:

# Todo:补全Tower类
class Tower:
# Todo:初始化属性name, location, AD, ADSpace攻击间隔默认2秒钟
    def __init__(self, name, location, AD):
        self.name=name
        self.location=location
        self.AD=AD
        self.ADSpace=2
# Todo:在Tower类中打印输出属性的值
        print("Tower:{0},{1},{2},{3}".format(self.name,self.location,self.AD,self.ADSpace))

# Todo: 输入三行字符,按照顺序依次为对象的名称(name)、位置(location)、攻击力(AD)初始化、攻击间隔默认2秒钟
name=input()
location=input()
AD=input()

# Todo:实例化Tower对象,打印输出结果
tower=Tower(name,location,AD)

运行结果:

2.防御塔反制


源代码:

# Todo:补全Tower类
class Tower:
# Todo:初始化属性name, location, AD, ADSpace攻击间隔默认2秒钟
    def __init__(self, name, location, AD):
        self.name = name
        self.location = location
        self.AD = AD
        self.ADSpace = 2

# Todo:  补全attack()方法,
#       传入参数为:攻击目标的生命值,
#       返回值:攻击目标的剩余生命值。

    def attack(self, number):
        return number-AD

# Todo: 输入四行字符,按照顺序依次为Tower类对象的名称(name)、位置(location)、攻击力(AD)、攻击目标的生命值
name=input()
location=input()
AD=int(input())
number=int(input())

# Todo:实例化Tower对象
tower=Tower(name,location,AD)

# Todo:调用atta计算防御ck方法,塔攻击的次数、击杀目标所消耗的时间。

# Todo:打印输出防御塔攻击的次数、击杀目标所消耗的时间。
count=0
while number>0:
    number=tower.attack(number)
    count+=1
print(count)
print((count-1)*tower.ADSpace)

运行结果:

3.防御塔闪耀


源代码:

import random
# Todo:补全Tower类
class Tower(object):
    # Todo:初始化属性name, location, AD, ADSpace攻击间隔默认2秒钟
    def __init__(self, name, location, AD):
        self.name = name
        self.location = location
        self.AD = int(AD)
        self.ADSpace = 2;

    # Todo:  补全attack()方法,
    #       传入参数为:攻击目标的生命值,
    #       返回值:攻击目标的剩余生命值。

    def attack(self, number):
        result = 0
        if number - self.AD > 0:
            result = number - self.AD

        return result

    # Todo: 输入四行字符,按照顺序依次为Tower类对象的名称(name)、位置(location)、攻击力(AD)、攻击目标的生命值

t_name = input()
t_location = input()
t_AD = input()
t_number = int(input())

# Todo:实例化Tower对象
tower = Tower(t_name, t_location, t_AD)

# Todo:  调用attack方法,计算防御塔攻击的次数、击杀目标所消耗的时间。
#       防御塔每攻击一次需要随机生成叠加伤害比率,在50%~60%之间浮动
result = t_number
count = 0
while result > 0:
    result = tower.attack(result)
    count = count + 1
    number = int((random.random() + 5) * 10) / 100
    tower.AD = tower.AD * (1 + number)

times = (count - 1) * tower.ADSpace

# Todo:打印输出防御塔攻击的次数、击杀目标所消耗的时间。
print(count)
print(times)

运行结果:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。