黑马程序员技术交流社区

标题: Java实现Dota英雄PK计算器~1级白牛和25级人马夺冠 [打印本页]

作者: 闪客sun    时间: 2016-11-20 12:12
标题: Java实现Dota英雄PK计算器~1级白牛和25级人马夺冠
我非常喜欢Dota这款游戏,趁着学习Java就用代码做了一个英雄PK计算器的工具,其实就是两个英雄在无装备也无技能的时候对着a,看谁先被打死。
其实难点并不在于实现过程,而在于如何把代码写的漂亮且具有扩展性。
先说数据的录入工作,Dota英雄的数据有一部分叫基础数据,就是你必须录入而不能通过其它数据计算的,比如基础力量、基础攻击间隔等等。而有些数据则是通过这些基础数据算出来的,比如生命值=150+力量值*19。所以其实网上所查的英雄数据库从程序的角度来讲并不专业,
因为它常常包含"重复"的数据如生命值,又少了必要的基础数据如基础攻击间隔。
我用这些基础的属性数据构造一个英雄类,new出所有Dota的英雄对象(当然这一步数据录入可以用scanner直接从文件中读取),这些基本的准备工作就做好了。
接下来就要考虑英雄对a需要哪些数据来判断输赢,我用五个数据来作为参考,分别是生命值、生命回复速度、攻击力、伤害减免(根据护甲值)、攻击间隔。这五个数据都是那些基础数据的函数,如何计算就不在赘述。
在接下来就是用这些数据判断输赢,比如A英雄打B英雄,那么我们可以计算A打出的一下普攻让B实际掉了多少血,B又在这下普攻的间隔中回复了多少血,这可以计算出A的一下普攻对B血量少的最终效果。不难计算出A多少下普攻让B死亡(life<0),最后根据攻击间隔计算出死亡时间(time)对比一下即可。
写完这个程序我做了个遍历,结果白牛为1级时最强的单挑英雄,我想是因为它力量攻击力护甲都处于高水平。而25级裸装备无技能时人马为最强英雄,因为力量成长太高了。
暂时还没有想到如果加入技能和装备等因素应该如何完成,是把他们另设置成接口么,光环接口?buff接口?希望同样喜欢dota和编程的人一起探讨。
想要我的源码的可以私聊我,想要一起打do开黑的也可以私聊哈哈哈哈,共勉!

作者: 挨踢小白    时间: 2016-11-20 12:58
给你100不怕你骄傲…

作者: 闪客sun    时间: 2016-11-20 13:03
挨踢小白 发表于 2016-11-20 12:58
给你100不怕你骄傲…



作者: IceLoveInFire丶    时间: 2016-11-20 13:55
你帮忙算一下场上五个奴隶主一个暴乱狂一个战歌,对面三个淤泥,你手里有两个旋风斩一个食尸鬼,算一下你有多高斩杀

作者: 闪客sun    时间: 2016-11-20 14:46
IceLoveInFire丶 发表于 2016-11-20 13:55
你帮忙算一下场上五个奴隶主一个暴乱狂一个战歌,对面三个淤泥,你手里有两个旋风斩一个食尸鬼,算一下你有 ...

额。。。

作者: SuperTommy007    时间: 2016-11-20 21:06
广大水友表示一级蓝胖最叼...
作者: lieyemu    时间: 2016-11-20 22:38
学习学习
作者: 闪客sun    时间: 2016-11-20 22:57
SuperTommy007 发表于 2016-11-20 21:06
广大水友表示一级蓝胖最叼...

那还是我大尸王叼





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2