设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

跟我从头学Ruby(1)

2005-11-28 00:00| 发布者: 柳柳| 查看: 10191| 评论: 0|原作者: 66RPG

摘要:    作者 sailcat  版本与更新  2005年11月下旬  相关网址 点此进入讨论贴  范例工程    教程内容 第一章  Hello World第一节  什么是Ruby   Ruby
 

 作者

sailcat

 版本与更新

 2005年11月下旬

 相关网址

点此进入讨论贴

 范例工程

 



 教程内容

第一章  Hello World

第一节  什么是Ruby

   Ruby是一种面向对象的编程语言,它是RPG Maker XP在内部所使用的脚本系统RGSS(Ruby Game Scripting System)就是基于这种语言的。
   在这里首先解答新人的问题:

   --Q1: 我为什么要学习Ruby?
   --A1: 为了可以把游戏做的更好。

   --Q2: 用事件不是也一样做吗?
   --A2: 可以实现大部分的功能,但不是全部。

   --Q3: 事件的功能是怎么实现的?
   --A3: 通过RGSS的命令解释器,核心还是Ruby脚本。

   澄清了这几个问题以后,下面就开始我们的Ruby之旅吧。

第二节  从事件开始

   新建一个工程,你可以把它用作你学习Ruby的专用工程,你可以在这里测试Ruby的功能。需要说明的是,在这个教程中,直到第5章以前,你都可以像平时为某一个纯事件系统的编写建立测试工程那样,不需要备份什么东西,也不必担心会改坏什么东西。我们的教学都是建立在事件上的,错了,把事件删了就行。
   之所以从事件开始,一方面是因为事件是大多数新人学用RPG Maker所首先接触到的东西,从这里入手,可以有一种逐步深入的感觉,我并不建议新手刚上来就按下F11然后对着那个庞大的列表发上一天的呆——就像老虎吃天,无从下口。
   请一定相信,Ruby是足够强大的,虽然我们只是从事件开始,但是,用加进了Ruby的“纯事件”,已经可以实现你很多想也不敢想的功能了。站上那个立交四方通行桥的范例就是我做的,整个功能从头到尾,仅仅只是一个并行事件而已。
   我是学语言的,所以我知道,对于一个学习语言的新手,最关注的问题就是:他能听懂我说的话吗?他会有应有的反应吗?计算机编程语言也是一样,新手最关注的问题,一定是“我的程序能被计算机接受并执行吗?”“我能看到我想要实现的效果吗?”不外乎此类的问题。那么我们就先用Ruby在你的游戏里打个招呼吧。
   在地图上新建一个NPC事件,编辑事件,在事件选单的三页中翻到最后一页,点击最后一项“脚本”,是的,没有什么神秘,“脚本”,就和“显示文章”、“注释”一样,是一个很普通的事件,你点开以后会看到一个方框,所不同的是,它比“显示文章”的方框大三倍,比“注释”的方框大两倍。这是一个12行,40列的方框。
   
   就在这个小小方格里,开始我们进入Ruby世界的第一次实战。

第三节  初试身手

   在方格里输入下面的文字,原封不同的照抄,包括大小写和标点符号在内。注意全部使用半角字符,全角字符,Ruby是不认的。
     p "Hello World"
   
   输入完以后,按确定。你会看到在事件指令列表里多出来这样一条:
     ◆脚本: p "Hello World"
   
   好了,这就是一条事件脚本指令,它就像“显示文章”的指令一样和其他指令没什么区别。
   现在测试一下游戏,和你建立的这个NPC对话,其结果,应该是弹出一个系统对话框,上面显示"Hello World"。
   
   这个对话框,就是Ruby程序 p "Hello World" 执行的结果。p 指令是Ruby的标准输出指令之一,不过在RMXP里,它被重定向到了系统对话框上。所以你看到的就是弹出一个对话框,上面写着你输出的东西:字符串"Hello World"。
   不错,通常我们在书本上看到某人说话都是带双引号的,但是如果一个人就站在你面前对你说话,每一句都强调一下双引号,你会不会觉得很古怪呢?好,那么我们就来把双引号去掉。
   就像更改显示文章的文章内容那样,在事件指令列表里把光标定位到脚本上,按空格键,就会编辑这个事件。
   这次,把p 改成print ,其他的都不要动。按确定,你会看到事件指令列表已经改了。
   测试游戏,和这个NPC说话,其结果,应该还是弹出一个系统对话框,上面是没有双引号的Hello World字样。
   
   这里解释一下p 和print,这两个都是Ruby默认的标准输出指令,只不过p 指令会特别强调输入内容的类型,所以它在字符串的两边都加上了双引号以示强调。
     p false
     p "false"
   显示的内容是不一样的,但若是把p换成print,显示的内容就一样了。
   记住一点:这两个指令可以用来输出很多内容,当你以后为了编写某一项功能而要大段大段地写程序时,它们可以放在你所需要的位置,用做监视和调试程序之用。
   也许到了这里,你会很不满的嘟囔一句,难道Ruby就只能弹这么一小破框儿来哄哄小孩子么?
   好,那么我就让这个NPC来真正的和你说一声Hello World吧!

第四节  真正的招呼

   编辑那个脚本事件,清除原来的内容,这次输入:
     $game_temp.message_text = "Hello World"
   
   好了,保存这个事件,测试游戏。
   和NPC对话,你看见了什么?
   --一个显示文章用的窗口,其中的内容是:Hello World
      可能你马上就会发现这个和“显示文章”的区别:当你按下C键后,它不是像“显示文章”那样把对话框关掉,而是将对话框刷新一遍。
   这是因为事件解释器在内部处理“显示文章”的事件时,并不是简单的把你输入的文章内容放在上面那行脚本的等号右边了事,还牵涉到一系列的调用返回值等不少的设置(事实上,“显示文章”的解释器是事件指令里比较复杂的解释器之一),在这里暂且略过不表。
   通过上面的例子,相信你也看到了,Ruby脚本可以实现“显示文章”指令的功能,对不对?
   可能你想问 $game_temp.message_text是什么意思,那我就来满足一下你的好奇心吧:$game_temp是游戏对象Game_Temp的一个实例(也是惟一的实例),而message_text是它的一个方法,该方法定义了赋值和被赋值的功能。
   好了,更多的内容我就不提及了,那些陌生的术语,就留到第5章和第8章再讲吧。
   观看了Ruby的功能演示之后,下面我们就该说一下Ruby最基本的一些东西了,那就是——语法,请看第二章:常量与变量。


 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。

5

鲜花

刚表态过的朋友 (5 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-24 22:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部