跟我从头学脚本

上传人:mg****85 文档编号:37017689 上传时间:2018-04-05 格式:DOC 页数:31 大小:229.50KB
返回 下载 相关 举报
跟我从头学脚本_第1页
第1页 / 共31页
跟我从头学脚本_第2页
第2页 / 共31页
跟我从头学脚本_第3页
第3页 / 共31页
跟我从头学脚本_第4页
第4页 / 共31页
跟我从头学脚本_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《跟我从头学脚本》由会员分享,可在线阅读,更多相关《跟我从头学脚本(31页珍藏版)》请在金锄头文库上搜索。

1、跟我从头学脚本(一)原作者:Dubealex Near Fantastica(特别讲) 主讲人(翻译):frantice 电子书制作:小湖 第一讲 什么是 Ruby?什么是 RGSS? 首先请在工程中按下 F1 看基本知识 我不重复别人说的话了.Ruby 它诞生于 1993 年 2 月 24 日,它是面向对象的解释性语言(即00),任何一种 00 语言都包含以下 4 个部分: -Class 类 -Methods 方法 -Messages -Arguments -Variables/Constants 变量和常量 它们之间的关系:一个对象的例子 假设 class 为一个汽车制造厂 ,那么目标就是

2、汽车. 汽车制造厂包含所有来制造汽车的功能,每辆车都是一种同样东西的不同形式.这些不同的汽车形式也是不同的对象,也可以在不改变其他汽车对象的基础上在加以改造.当汽车公司需要另一辆汽车的时候, 他们只用简单地向汽车制造厂要求制造一辆新车,只要盖好了一个工厂(就是 class-类)你就不需要每次都去重复地对汽车(object 对象)操作了. 一个处理对象的例子 在 RPG Maker XP 里, 你的人物都有很多属性,如”名字”HP”等级”等等,这些在游戏里都能打开菜单看到.它们是靠后台执行你所发出的指令来完成显示的. 一种方法事实上定义了目标对象接收到什么信息,接受到会发生什么.所以说,每次消息

3、传送或接收,对象都是和它的制造者(class-类)所关联,靠相关的方法来执行. 回到人物的例子,我们就知道了有一种类专门定义人物,这个类有种为你发给目标对象的信息而生成的方法.然后我们就找到一种叫”name”的方法 什么是 RGSS? “Ruby Game Scripting System”是 RGSS 的全称,它不是一种语言.鉴于大家都知道它是音乐测试左边那个按扭,其他不多说了. 下面看个例子,一行描绘图片的脚本: image = Sprite.new image.bitmap = RPG:Cache.picture(name of picture) 理论上,要在屏幕上显示出图片需要 2 行

4、脚本,因为你要使用一个叫”Sprite”的类, “Sprite“ 在 RMXP 中已事先编好(不在脚本编辑器中).也需要一个 module 模块 (也不在脚本编辑器中) RGSS 编辑器 脚本里的字体各有颜色,不同的颜色都有什么含义呢? 蓝色: 语法, 如 def, class, end, when, if, case. 红色: 数字, 如 1, 2, 3, 4,. 浅蓝色: 符号, 如+, * , = , | , 绿色: 注释, 不被执行的内容 紫色: 自己看- - 常用快捷键 Control+F 本脚本页中寻找 Control+Shift+F 全局搜索 Control + H 替换 Con

5、trol + G 转到第几行第二讲 基本词汇和语法(上) 一些基本的废话将完了,我们直接进入正题0.接下来的请大家一起跟我实践 先在 RGSS 编辑器中新建一个脚本,插入这些: class Say_Something def initialize print “I am therefore Im coded” end end 然后找个 npc 并在他事件页的脚本那里写入 Say_Something.new 点他后我们看到什么了呢?冒出来一个写着” I am therefore Im coded”的窗口. 这是为什么呢?让我们来一行一行地看: class Say_Something 这里我们创建

6、了一个叫 Say_Something 的 class (类) def initialize 这里我们定义了一种新的方法叫 Initialize (初始化) print “I am therefore Im coded” 我们增加了当”initialize”的方法被调用时执行的东西 两个 end 是语法 我们再进一步学习: “initialize” 是一种默认的方法,当你在事件中调用脚本时候执行. 脚本语句”Say_Something.new” 你用”new”的信息命令 RMXP 来创建 Say_Something 的对象 关于 end: 哪些词语需要用 end 来结束呢?看看这个.是不是清楚了

7、点呢?:好了,我们回头看看事件页写的那行” Say_Something.new” ,注意到了吗, 它前面没有写对象, 我们可以试着改为” my_object = Say_Something.new” , 效果是一样的,不过心里舒坦了点吧.这是为什么呢? 这里我们创建了一个新的目标对象叫”my_object” ,它应该是在”Say_Something”这个class 里的,但是我们开头那个”Say_Something “,除了一条信息外空空如也.所以我们没必要在事件那里多一个对象. 那么,我们来给这个空空如也的”Say_Something “类多点什么吧! 重新替换开头那行脚本为: class

8、Say_Something attr_accessor :greeting attr_accessor :name def initialize(greeting, name) greeting=greeting name=name end def say print greeting + “ “ + name end end 然后在那个 npc 事件脚本里重新写为: message1=Say_Something.new(“Hello”, “Alex”) message2=Say_Something.new(“Hello”, “Peter”) print message1.name print

9、 message2.name message1.say message2.say 执行看,是不是华丽多了?我们看到 4 个冒出来的窗口.分别显示”Alex”,”Peter”,”Hello Alex”和”Hello Peter” 这里我们创建了两个目标”message1”和”message2”他们都依靠”Say_Something”类,就像第一讲里那个汽车厂的例子一样,改变一个是不会影响另一个的. 那么他是如何运行的呢?请看第三讲. 第三讲 基本词汇和语法(下) 大家应该没忘记上回的内容吧0,好,不废话了,今天继续! 我们来看看他的脚本是怎么写的,因为说明较长,所以给脚本标上了行数: 1 cla

10、ss Say_Something 我们这里创建了一个新的对象叫“message1“它将做为 Say_Something 的一个 instance 来使用.也就是说我们对这个对象的任何操作都是在这个 Say_Something 类里来定义的“.我们已经在这个类的 initialize 方法里添加了 Argument 接收器(不明白的见第一讲的图示),我们需要发送这些 argument .那么怎么发送到这个类里呢?和我们处理它的方法一样,在这个类名里列出他们就行了 2 attr_accessor :greeting 我们在这里定义了一个 ATTR 值,全称是 Attribute. 我们可以简单地用

11、 ATTR_ACCESSOR 来定义一个新的可读可写,适用于由 Say_Something 创建的任何对象的 instance 的功能.我们第一个 ATTR 的名字叫 greeting. 3 attr_accessor :name 定义另一个 ATTR, 名字叫 name 4 def initialize(greeting, name) 我们定义了一个新的方法 initialize.看过前面教学,你大家应该明白这个 initialize 的方法是在一个对象由 class 类创建时,第一个执行的方法.所以我们添加 Argument 接受器,那么这个方法可以被接收到了. 在这个例子中, 这些“ar

12、gument“ (ATTR)是“greeting“ 和 “name“. 我们在冒号的两边放上这些 argument 接收器和方法的名字. 注意这些“Argument 接受器是 “ “接收者“; 也就是说逗号两边的都是变量名,它们在后来还是有用途的. 5 greeting=greeting 这里我们新定义了一个“Instance 变量“ , 他们把“greeting“这个数据传送出去.一个 instance 变量都由 开头,在同类的每个方法中都非常有用.它们都在方法中定义 通过这样我们就能命令 RMXP 接收“greeting“ 并把它放在“greeting“ 里以便其他方法中调用 6 name

13、=name 同上,不过这回的 attribute 是”name” 7 end 结束方法 initialize 8 def say 定义一个新的叫”say”的方法 9 print greeting + “ “ + name 我们这样编码,当”say”这个信息被对象接收了会怎么样.这里是显示“greeting“的内容,一个空号后加入“name“.的内容. 10 end 结束 say 的方法定义 11 end 结束 Say_Something 这个类 好了,脚本是看完了,再完整地看一遍: class Say_Something attr_accessor :greeting attr_accesso

14、r :name def initialize(greeting, name) greeting=greeting name=name end def say print greeting + “ “ + name end end 是不是不那么扑朔迷离了? 那么接下来看事件页脚本,我们也一行一行地看0. 1 message1=Say_Something.new(“Hello“, “Alex“) 我们创建了一个新的目标对象叫“message1“ ,它是类“Say_Something“的一个 instance (也就是说我们对这个对象的任何操作都是在这个 Say_Something 类里来定义的).

15、我们在这个类的 initialize 方法里已经添加了 “Argument 接受器“ , 我们就要发送这些 argument. 2 message2=Say_Something.new(“Hello“, “Peter“) 同 1 3 print message1.name 我们用 Ruby 的命令“print“ 来显示对象“message1“中储存的 name 名字.大家可以看到, 只用这个类的 ATTR 中定义过的 name 名字就能获得对象的 attributes (内容) 4 print message2.name 同 3 5 message1.say 我们现在发送了信息给对象“mess

16、age1“,这个信息就是“say“. 然后,你告诉“message1“ 执行“say”的功能; 再然后,“message1“在它的类“Say_Something“寻找定义过的命令.就这样,目标对象就返回到了 class 类中定义过的动作,也就是在屏幕中显示. 6 message2.say 同 5 完整地看下事件页这几行脚本: message1=Say_Something.new(“Hello“, “Alex“) message2=Say_Something.new(“Hello“, “Peter“) print message1.name print message2.name message1.say message2.say 好了,今天的教学就到这了,好好回顾一下前三讲的东西,主要是理论部分较多,需要好好理解接下来我们就主要学习如何编码了,基础要掌握好才能建好

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号