作者poga (波卡)
看板Ruby
标题Re: 问一段ruby语法的问题
时间Sat Jul 15 19:34:41 2006
※ 引述《kons (kons)》之铭言:
: 最近刚好在用RMXP做游戏
: 想要写脚本,却遇到了瓶颈,我不懂程式语言啊!
: def hit
: n = base_agi + @dex_plus.to_i
: for i in @states
: n *= $data_states[i].hit_rate / 100.0
: end
: return Integer(n)
: end
: 请问一下,以上这段文字的意思要如何解读?
: def是什麽意思呢?
: for i in @states又是什麽意思?谢谢!
因为我没有实际碰过RMXP 所以某些地方可能解释有错 请各位指正 <(_ _)>
def hit
这行代表我们要宣告一个计算"命中率"的函式
def是宣告函式所需的关键字 "hit"就是这个函式的名字
首先 我们先建立了一个
变数 n 用来储存计算过後的命中率
第二行 n = base_agi + @dex_plus.to_i 应该是代表着
将n设为 基本敏捷值 + 额外敏捷加成
接下来的for i in @states是一个回圈(或着说是iterator?)
意思是说 把states这个阵列里头的每个数字 一个一个取出来 丢到i里面
然後执行下面这行:
n *= $data_states[i].hit_rate / 100.0
将n乘上 (i代表的命中率 / 100.0)
$data_states[i].hit_rate/100.0这行就有点复杂了
你可以想像成电脑里有一个表格长这样:
data_states | hit_rate | dodge_rate | OOXX | ....
-------------------------------------------------------------------------
1 | 30 | 10 | 5 |
2 | 31 | 11 | 5 |
3 | 32 | 11.5 | 6 |
.
.
.
(上面那是乱写的 实际数值一定不是那样)
所以说 假设我们的i里面的数值是22 我们要怎麽知道22所对应到的命中率是多少呢?
很简单 就查上面的表
$data_states[i]可以想像成 要电脑找出data_states这个栏位里面 数值是22的那行
後面的 .hit_rate 就是要电脑找出这一行里面hit_rate的值了
再把得到的hit_rate值除以100 换成小数 再把n乘上得到的数值
把@states里面的每个值都这样做一遍之後
再把n回传回去 就完成了!
最後得到的n就是计算出来的命中率
--
只看程式码也可以写出这麽大一篇 这告诉我们好的变数名称是多重要的一件事 ̄▽ ̄
注:有些地方实际上不是我说的方法
不过这样去理解应该是不会有什麽问题..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.48.15
※ 编辑: poga 来自: 218.170.48.15 (07/15 19:36)
1F:推 kons:谢谢!我大致上了解了 07/15 19:44
2F:推 fayhong:ya! 回圈 07/16 14:40