本帖最后由 DeathKing 于 2014-6-21 22:13 编辑
1. Ruby和RGSS3一定要分开!!!讲Ruby的时候一定专心讲Ruby,不要跟RGSS3搅在一起,把Ruby打扎实了再继续RGSS3。我之前写URG3的时候,就想找个靠谱的人先写一份Ruby教程。
2. 讲Ruby的时候,只需要讲部分子集(尽量越少越好),够写个普通的RGSS脚本就行了。WIN32API之类的暂时不需要,像什么for和each的区别之类的,也不要过分纠结,给一个一般性的导向就行了。
3. 逻辑一定要清楚,整个流程是怎么回事,一定要交代清楚。RGSS3是一个框架,要理解它的工作流程。最好要制作一些示意图,帮助读者理解,但这个的前提是作者对问题本身有着很深刻的理解!
4. 一定要坚持……还要合理更新。想想URG3和RGSS3小探的报告,一拖就是三年,我真感觉有点对不起读者啊………………
后来看到有题……贴代码的话又会被认为是在装逼吧
第一题,简单来说的话用了函数式编程的高阶语义,reduce是所谓的归约。Ruby的Range类支持reduce感觉有点奇怪,最初我用.to_a让Range变为Array,结果还多花了“几个字符”。
A1.
顺便说一下,这个问题你如果知道了原理,可以写成各种花样的,就是一些函数式编程爱好者(比如我)喜欢玩的把戏而已(注意这不是什么很本质的东西,只是高阶语义的抽象)。
(1..100).reduce {|x, y| x * y} (1..100).reduce &->(i, j) {i * j} (1..100).to_a.reduce(&:*)
(1..100).reduce {|x, y| x * y}
(1..100).reduce &->(i, j) {i * j}
(1..100).to_a.reduce(&:*)
一个自底向上计算的斐波那契数列,通常的解法是递归地求解。
fib = [0, 1, 1] 3.upto 100 do |i| fib[i] = fib[i - 1] + fib[i - 2] end
fib = [0, 1, 1]
3.upto 100 do |i|
fib[i] = fib[i - 1] + fib[i - 2]
end
第三个,作弊吧……要是老老实实做,筛一遍还是可以的。
require 'prime' Prime.first 100
require 'prime'
Prime.first 100
第一题是函数式,第二题有动规的思想(就是所谓的做记忆,先解子问题),第三题就是个算法(我们偷用了Ruby的库)。
看着上面代码写得爽哈?其实对做游戏没多大帮助。
因为RGSS3就只需要你给几个变量赋值,实例化几个窗口啊,喂! |