Re: 問一段ruby語法的問題
※ 引述《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)
推
07/15 19:44, , 1F
07/15 19:44, 1F
推
07/16 14:40, , 2F
07/16 14:40, 2F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章