A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我非常喜欢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开黑的也可以私聊哈哈哈哈,共勉!
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

7 个回复

倒序浏览
回复 使用道具 举报
挨踢小白 发表于 2016-11-20 12:58
给你100不怕你骄傲…


来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
你帮忙算一下场上五个奴隶主一个暴乱狂一个战歌,对面三个淤泥,你手里有两个旋风斩一个食尸鬼,算一下你有多高斩杀
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
IceLoveInFire丶 发表于 2016-11-20 13:55
你帮忙算一下场上五个奴隶主一个暴乱狂一个战歌,对面三个淤泥,你手里有两个旋风斩一个食尸鬼,算一下你有 ...

额。。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
广大水友表示一级蓝胖最叼...
回复 使用道具 举报
lieyemu 中级黑马 2016-11-20 22:38:48
7#
学习学习
回复 使用道具 举报
SuperTommy007 发表于 2016-11-20 21:06
广大水友表示一级蓝胖最叼...

那还是我大尸王叼
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马