Python模拟MOBA手游~防御塔

发布于 2021-04-29 06:56

点击上方蓝字关注"程序员Bob"呀~


领袖和跟风者的区别就在于创新。

——乔布斯


呼,大家好啊,前几天参加了华为云开发者大会,也去了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=0while number>0: number=tower.attack(number) count+=1print(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_numbercount = 0while 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)


运行结果:



未完待续...

为你,千千万万遍.

程序员Bob
旨在与大家一起共享学习资源,方法,心得,经验。
138篇原创内容
公众号

往期推荐:

Python模拟MOBA手游~铭文篇 2021-04-22
Python模拟MOBA手游~英雄篇 2021-04-16
C++系列:链接器是如何工作的 2021-04-07


一键三连,就差你了