Project1

标题: 请教这个算式的写法有什么问题吗 [打印本页]

作者: 幻耶    时间: 2009-9-16 09:16
标题: 请教这个算式的写法有什么问题吗
在做ARPG,当满足以下算式,角色就判定为打中敌人,变量2是主角的灵巧+速度的平均数,变量3是敌人的灵敏(在敌人的名字中提取)
但是在游戏中测试发觉即使主角的灵巧和速度都升级了,命中率也没上升,怎么回事?

if rand(100) < [($game_variables[2]-$game_variables[3])/$game_variables[2]*100,0].max+20+rand(5)
  进行伤害处理的计算
end
作者: wsffx13    时间: 2009-9-16 09:35
如果不考虑你是否确实将敏捷即时跟更新到那几个变量里的话,说说你的计算式吧。
从中看出,只要你的灵敏平均数小于敌敏捷的话,再升级也是白搭,此外,你又拿他当分母…所以敌敏捷必需是你均数的几分之一才能见到明显效果,你升一级敏捷翻一翻的话应该能看到效果……
作者: 幻耶    时间: 2009-9-16 09:55
本帖最后由 幻耶 于 2009-9-16 09:58 编辑

我测试是从主角1级升到70级来对比的,也就是说,主角的灵敏平均数差不多从50增到400,而测试敌人的灵敏是60不变,但是命中率没上升,按这个算式来看,命中率应该从百分之二十几增加到百分之百的
作者: goahead    时间: 2009-9-16 11:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2009-9-16 12:28
因为,如果变量2和变量3都是整数的话,这个运算结果是[零]~~~:
[($game_variables[2]-$game_variables[3])/$game_variables[2]
goahead 发表于 2009-9-16 11:22



运算结果是0?为什么不会是小数呢?那么这样可以么:($game_variables[2]-$game_variables[3])*100/$game_variables[2]+20+rand(5)
作者: goahead    时间: 2009-9-16 16:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: BBS    时间: 2009-9-16 20:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 幻耶    时间: 2009-9-16 20:33
5# 幻耶


把100改成100.0
goahead 发表于 2009-9-16 16:43



100 和 100.0 有什么区别?
作者: BBS    时间: 2009-9-16 20:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 紫苏    时间: 2009-9-16 20:58
两种精度不同的数据类型进行运算的时候,编译器会自动将运算精度提升到两种数据中最高的精度,你 / 100.0 的时候前面虽然是整数,但最后返回的结果精度还是提升到了浮点数;而如果你 / 100,前后都是整数,所以它仅仅返回的是整除 100 后得到的商




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1