打开RMVA,新建一个工程。
打开工程文件夹:选择测试(倒数第二个菜单),然后选择打开游戏文件夹(最后一项)。将会看见游戏的文件夹。
复制脚本:进入其中的Data目录将Scripts.rvdata2复制一份,改名为MyScripts.rvdata2就行了。 如果看到的是没有后缀名.rvdata2的Scripts,改为MyScripts就行了。
删掉默认脚本:回到RMVA,打开脚本编辑器,在左侧把所有脚本都删掉。 以后就在这个工程的基础上来讲解。
一行脚本能做到的事情有很多,首先我们来运行一个程序:
保存运行游戏,应该会打开一个记事本。 游戏会在关闭了记事本之后退出。
system的含义是给系统发送一个命令,让他启动程序,要启动的内容是”notepad.exe”。如果拿手机通信来比喻,可以发短信给系统,发短信这个方式是system,而内容是”notepad.exe”。
也可以发彩信: 启动程序 “notepad.exe”。 当然’启动程序’现在是没有的,下面就要说到。
也可以把notepad.exe换成别的名字,比方说”mspaint.exe”(画图),或者”winmine.exe” “mshearts.exe” “freecell.exe” “sol.exe”(依次是扫雷 红心大战 空当接龙 纸牌并不是所有机器上都有)
也可以把system换成别的预定义消息(方法),如常见的msgbox或者msgbox_p
事实上也可以约定说‘启动程序’的消息名字就是’启动程序‘而不是system,内容是记事本,于是改成下面的样子:
| def 启动程序 x msgbox "将要启动 #{x}" system x end 记事本 = "notepad.exe" 启动程序 记事本 |
这个从数学函数来理解就相当于:
f(x) = 提示”将要启动”x的信息 然后运行x
y = “notepad.exe”
f(y)的结果? 当然是提示 “将要启动notepad.exe” 然后运行”notepad.exe”
也可以:
| def 加法 a,b a+b end msgbox 加法 3,5 #显示8 |
3. 在Ruby里面,”定义消息“也可以是一个消息。
(名字是define_singleton_method。略长。含义是定义单个对象方法,对象就是消息的接受者,为这个接受者定义一个自定义消息。消息处理是一个函数,在Ruby里面,这种函数按照面向对象设计的惯例叫做方法。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def 定义消息 消息名, 收到消息要做的事 define_singleton_method 消息名, 收到消息要做的事 end 定义消息 "启动程序", ->程序{ system 程序 } =begin 对比 def 启动程序 程序 system 程序 end =end #井号后面的哪一行 #以及=begin =end之间的部分不会被运行 记事本 = "notepad.exe" 启动程序 记事本 |
注意在要做的事里面用到了一个->{}结构,他只是一个块,而不是正式的消息,写法是
| ->消息内容1, 消息内容2,...,消息内容N {要做的事} |
同时虽然前面没写出来,def … end也可以接受多于1个内容,也叫做参数,用逗号隔开:
| def 消息名 消息内容1, 消息内容2,...,消息内容N 要做的事 end |
Ruby内置define_singleton_method这类方法表明,可以很方便地为Ruby添加语法。原本是关键字的def,也可以降格成一行程序
| 定义消息 "启动程序", ->程序{ system 程序 } |
| def 运行 程序 system 程序 end 记事本 = "notepad.exe" 画图 = "mspaint.exe" 运行 记事本 运行 画图 |
| alias 运行 system #定义消息的新名字: alias 新名字, 旧名字 运行 "notepad.exe" |