RMXP脚本Ruby的语法.docx

上传人:b****5 文档编号:3573115 上传时间:2022-11-24 格式:DOCX 页数:78 大小:68.18KB
下载 相关 举报
RMXP脚本Ruby的语法.docx_第1页
第1页 / 共78页
RMXP脚本Ruby的语法.docx_第2页
第2页 / 共78页
RMXP脚本Ruby的语法.docx_第3页
第3页 / 共78页
RMXP脚本Ruby的语法.docx_第4页
第4页 / 共78页
RMXP脚本Ruby的语法.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

RMXP脚本Ruby的语法.docx

《RMXP脚本Ruby的语法.docx》由会员分享,可在线阅读,更多相关《RMXP脚本Ruby的语法.docx(78页珍藏版)》请在冰豆网上搜索。

RMXP脚本Ruby的语法.docx

RMXP脚本Ruby的语法

在基础篇,将一边完成单个短程序一边解说RGSS的基础知识。

首先,来进行开始学习的准备吧。

建立工程

首先建立一个工程,把它作为学习脚本入门用的新工程。

脚本是有关游戏实际运行的数据,照原样改动制作完成的工程,一个小小的错误也将引起游戏不能正常运行。

因此,推荐使用新建的工程进行学习。

另外,RGPXP脚本数据是保存在Data文件夹内的Scripts.rxdata文件中,如果对此文件(或游戏全部数据)已经备份的话,也可以使用既存的工程。

建立组

建立工程后,在主菜单「工具」菜单中选择「脚本编辑器」。

显示脚本编辑器对话框后,在最上面新建一个组。

点击右键于弹出菜单中选择「插入」,就建立了一个新的空白组。

组的名称是什么无所谓,可以取个容易理解的,我们这里暂命名为“TEST”。

名称的输入在窗口左下方的「名称」里进行。

结束程序

首先,请输入下面的代码。

exit

注意,在Ruby中是区分字母大小写的,所以不能输入EXIT或Exit。

当然全角文字也不行。

请全部以半角的小写字母输入。

输入完毕按「确定」键关闭脚本编辑器,运行(游戏测试)看看吧。

运行游戏测试,窗口应该显示一瞬间后立即关闭。

总之,在这里写的exit是结束程序的命令。

在最上面的TEST组中写入exit,因此程序就此结束。

而在后面众多组中编写的脚本都没有执行。

以后示例程序都会省略exit,在实际测试时请在最后一行加入exit。

如果没有加入exit而运行测试,就会显示出游戏的标题画面。

注释

在Ruby中,#符号后面的一整行文字会认定为注释。

#后的注释代码不会执行,不会影响到程序的运作,只作为编写者标记的备忘记录来使用。

exit#结束程序

这和事件指令的「注释」功能相同,是记录程序处理内容的简单说明,使用注释会很容易知道这段脚本是做什么的。

即使是自己编写的程序,但时间一长,该段内容是指定做什么处理也会忘记。

在脚本的学习和实际操作时,推荐注意多使用注释功能。

还有,作为程序的说明,在后面的学习中脚本会写有很多的注释。

但实际操作中没有必要完全仿效其注释的内容。

#以后的文字,可以按实际中最容易理解的说明注释。

语法和库

程序语言在结构上大致分为语法和库两种。

所谓语法,就是使用语言记录某些处理时的规则。

与中文和英文等自然语言一样,程序语言也有语法。

例如条件分歧的语法、循环的语法等等。

「#符号后面的一整行文字认定为注释」这也是语法之一。

语言的说法,狭义上指的就是语法。

所谓库,就是字符串的处理和图片的显示等带有应用功能的语言集。

与中文英文等自然语言中的单词和词组的意思相似。

学习了英文的语法在使用英文时,增加词汇量(掌握库的使用方法)则是非常必要的。

这个「脚本入门」基础篇是以学习语法为重点。

最开始学习时或许会产生「学习语法,到底有什么用」的厌烦感,应用逻辑思维来理解基本语法就能突破最初的屏障,仔细阅读参考程序记住实际的使用方法,其实并不是多么困难的事情。

那么现在就开始吧!

是关于Ruby中数字和计算的基础知识。

作为例子将使用计算器那样简单的计算来解说。

数字

Ruby中能使用的数字,包括整数和浮点数两种。

3#整数

52#整数

-99#整数

1.5#浮点数

3.0#浮点数

所谓浮点数,就是使用小数点以下计算的数。

数值相同的话写作3是整数,而写作3.0即是浮点数。

整数计算速度快,如果不需要小数点以下的话尽量使用整数。

显示数字

即在画面上显示数字。

想显示某些数字时,使用p命令。

小写字母p,半角字符,再把想要显示的数值按顺序输入后换行。

今后会出现各种各样的命令和符号,除注释外其它一律使用半角输入。

不小心输入全角字符的话,要注意发现错误。

p3

这个p命令可以在排除程序故障时使用,学习显示数字将会是十分有用的。

运行这个程序,会看到在弹出的对话框中显示3。

原本p不是显示对话框的命令,但是游戏开发时特殊化的RGSS在没有其它输出地点时就会自动显示对话框。

计算方法

在Ruby上进行计算吧。

p1+1#加法

p10-3#减法

p7*5#乘法

p24/4#除法

这样,写上普通算式就会输出计算的结果。

+和-等符号称为运算符。

另外还有乘法的*和除法的/。

不熟悉的人,一定要记住这些重点。

优先顺序

和普通的算式一样,*和/计算要优先于+和-计算。

想改变这个顺序就要使用括号(),括号中的算式将会优先计算。

p2*2+3*4#=>16

p2*(2+3)*4#=>40

p2*(2+3*4)#=>28

按优先顺序,示例第一行其实是4+12,第二行是2*5*4,第三行是2*14,所以会是不同的计算结果。

括号还可以多层重叠起来(即使是二层三层的情况也是使用同一个符号)。

还有,示例程序的注释中使用=>符号,主要是表示这行的输出结果。

这是为了方便直观的理解而做的说明。

小数点以下的计算

整数除整数的情况下,会省略余数,答案将还是整数。

想得到小数点以下的答案,就要使用到浮点数。

除数或被除数至少要有一个是浮点数(明确标明了小数点以下),计算的答案就会是浮点数。

p15/4#=>3

p15.0/4#=>3.75

p15/4.0#=>3.75

余数的计算

求余数(除法的余数),是使用%符号。

p14%4#=>2

p13%4#=>1

p12%4#=>0

运行示例第一行的算式,是求14除以4的余数,就会输出计算结果2。

乘方的计算

没必要强迫记住,乘方(同一个数指定次数的相乘)是使用**符号。

p2**4#=>16

这个示例求2的4次方,也就是计算2*2*2*2。

所谓变量,就是某些数值附上名称。

是相对于常量的数据类型。

变量的命名

变量命名的管理。

我们可以为变量取比如x和y或者更长的像level或gold这样的名称。

名称的长度没有限制。

变量有几个类型,首先我们来学习最基本的局部变量。

局部变量的命名规则有以下几点。

其中的第1条应该特别注意。

1.第一个字符必须以小写英文字母或_(下划线)开头。

2.第二个字符开始可以使用英文字母、数字或_(下划线)。

3.不能使用保留字作变量的名称。

保留字是作为Ruby中具有特殊意义的词而被系统所「保留」,所以变量名称不能使用。

以下就是系统的保留字。

aliasdeffalsenilreturnunless

anddofornotselfuntil

beginelseiforsuperwhen

breakelsifinredothenwhile

caseendmodulerescuetrueyield

classensurenextretryundef

除上面列出的保留字以外,其它的词都可以作变量的名称。

赋值和引用

在实际中使用变量看看吧。

x=3

y=4

px+y#=>7

第一行和第二行是进行变量的赋值。

其中=号是赋值运算符。

和数学上使用等号表示「左边等于右边」的意思不同,这里表示「左边的变量代入右边的数值」。

在上述示例中,第一行x变量和第二行y变量分别代入数值3和4。

第三行是引用变量x和y。

所谓引用就是取得那个变量的数值。

变量的计算和数字的计算方法完全一样。

这里的x+y可以解释为3+4,计算结果就为7。

另外,引用从未进行赋值的局部变量,就会使程序出现错误。

pzzz#ERROR!

!

请记住,变量一定要进行赋值后才能使用。

zzz=5

pzzz#=>5

这个示例中,第一行变量zzz为其赋值代入5后,第二行引用。

自运算

变量引用自己的数值,并再次代入计算结果称为自运算。

x=1

x+=7

x-=3

x*=2

px#=>10

第二行的x+=7相当于x=x+7,总之就是向变量x里加上7。

同样-=、*=、/=、%=等也是如此使用。

这些运算符就是自运算运算符。

RPGXP的变量进行自运算计算处理时思考方法都相似。

这个示例中第一行是赋值直接代入1,第二行加上7,这时x的值其实是8,第三行减去3,第四行再乘以2,最后的计算结果就是10。

全局变量

局部变量是暂时使用的变量,只能在函数和类等定义(在后面讲述)内部使用,之外变量就无效。

与之相对,在程序任何地方都能引用的就是全局变量。

全局变量可以在程序中任何地方使用,名称相同,就必然是同一个变量。

如下面的示例,以$号开头的变量就作为全局变量使用。

赋值方法和局部变量完全相同。

$global

虽然在任何地方都能引用,但使用全局变量不一定比局部变量好。

全局变量十分强大,胡乱使用恐怕会使程序变得很难懂。

请在使用时注意。

一般来说,由文字连接起来的数据就称为字符串。

print

双引号""或单引号''中间的部分,就作为字符串数据使用。

p"RPGMakerXP"#=>"RPGMakerXP"

p'RPGMakerXP'#=>"RPGMakerXP"

p命令会导致双引号和字符串一起输出,所以使用print命令代替。

print"RPGMakerXP"#=>RPGMakerXP

这次双引号就没有了。

p是按照人们容易理解的形式来显示的命令,所以它会加上双引号来强调字符串。

print和p相似,但它只显示字符串本身。

为变量赋值

和数字一样,字符串也能代入变量为该变量赋值。

a="RPGMakerXP"

printa#=>RPGMakerXP

字符串也能作加法,字符串加上字符串,就会得到一个连接起来的字符串为答案。

a="我的"

b="RPGMakerXP"

printa+b#=>我的RPGMakerXP

还可以作乘法,字符串乘以一个整数,就会得到该整数次重复的字符串为答案。

a="RPGMakerXP"

printa*2#=>RPGMakerXPRPGMakerXP

控制码

字符串中的\符号,是作为一段连续文字中换行等操作使用的特殊文字。

比如\n是表示换行。

控制码有\t(Tab)和\s(空格)等多种代码,另外\n表示换行,重叠起来的\\表示\文字本身,这两个一定要记住。

a="RPGMakerXP"

b="\\10,290"

printa+"\n"+b#=>RPGMakerXP

#\10,290

单引号''中间的字符串,除\\(\符号本身)和\'(单引号)外不能使用任何的控制码。

这在打算原样显示文字本身的情况下使用会十分方便。

print'RPGMakerXP\n'#=>RPGMakerXP\n

\符号本身即为计算机内部的控制码。

以后实际字符串操作中应注意正确使用。

内嵌表达式

在字符串里面,可以用#{变量名}的形式把变量的内容嵌入在字符串当中。

game="RPG"

print"#{game}MakerXP"#=>RPGMakerXP

上述示例里,第一行是为game变量赋值代入字符串“RPG”。

第二行里面,其中#{game}是表示直接嵌入变量game的值字符串“RPG”,和后面的“MakerXP”组合在一起,从而输出一个新的字符串。

RPGXP的事件指令「显示文章」里,在文章中使用\V[n]和\N[n]控制码可以把变量的值和角色的名称作为信息嵌入文字中,这个功能好像和那个十分相似。

这个功能,让我们举例来说明在预置脚本中应如何使用。

print("文件#{filename}没找到。

")

print的显示内容应附加上括号(),如果其优先顺序不易混淆的话可以省略(本章print的使用示例介绍中全部省略了括号)。

预置脚本中基本上都统一使用有括号,所以在这儿也加上一个。

这个是当然,

print("文件"+filename+"没找到。

")

像这样写也可以,使用内嵌表达式的方法会使读取程序变得很容易。

另外内嵌表达式和控制码一样,在单引号''中间的字符串里使用也会无效。

满足特定的条件与否,之后的动作会根据其不同而改变就叫作条件分歧。

比较运算符

在具体地学习处理条件分歧的方法之前,要先记住条件构成中使用的运算符。

下面6个运算符称为比较运算符。

使用这些运算符,和给予的条件(数字和字符串)相比较,然后返回结果。

==

相等

!

=

不相等

<

小于

>

大于

<=

小于或相等

>=

大于或相等

这里一定要注意的是,判断相等的运算符不是=而是==。

像已学习过的那样,所谓=符号表示的不是比较而是代入。

请注意不要弄混淆了。

真伪值

比较运算的运算结果就称为真伪值。

有真(正确)、伪(错误)两种情况。

比较后是正确的话为true值,是错误的话就为false值。

请试试看吧。

p("早安"=="早安")#=>true

p("早安"=="晚安")#=>false

p(3+1==3+5)#=>false

p(3+1==2+2)#=>true

逻辑运算符

下面6个运算符称为逻辑运算符。

and

&&

「~,与,~」的意思

or

||

「~,或,~」的意思

not

!

「非~」的意思

英文单词运算符和符号运算符,无论用哪个都是一样的。

在预置脚本中运用的主要是英文单词。

使用这些逻辑运算符就能指定更加复杂的条件。

p(100>77and1+1==2)#=>true

p(100>77&&1+1==2)#=>true

上述示例中,第一行和第二行表示的都是一个内容「100大于77同时1+1等于2」。

不用说100是比77大的整数,1+1答案也为2,两个运算都成立。

所以输出结果就为true(真,正确)。

那么,看下一个算式吧。

p(1+1==3or2+2==3)#=>false

p(1+1==3||2+2==3)#=>false

上述示例中,第一行和第二行表示的也都是一个内容「1+1等于3或2+2等于3」。

很显然,1+1不等于3,2+2也不等于3,这样两个运算都不成立。

比较运算符or(||)是只要有一个运算成立就为ture(真,正确),而这里两个运算全都不成立,所以输出结果就为false(伪,错误)。

另外,not(!

)和上面的例子稍微有些不同,not(!

)表示的内容为后面的条件不成立。

可以理解为颠倒true或false的运算符。

p(nottrue)#=>false

p(!

true)#=>false

上述示例中的内容是「非true」的意思,所以输出结果为false。

if~elsif~else~end

if~end语句是条件分歧的句法。

这个和英文的if(如果~就)意思相同,表示「如果if后面的条件成立的话,就运行下面的处理」的意思。

下面示例中的3~5行就是条件分歧。

a=20#为变量a赋值代入20。

ifa>=10#如果a为10以上的话,

print"big"#显示big。

end#分歧结束。

在条件不满足时也要进行处理的情况下就使用else,条件不满足但指定另一个条件的情况下就使用elsif。

a=7#为变量a赋值代入7。

ifa>=10#如果a为10以上的话,

print"big"#显示big。

elsifa>=5#除此之外,如果a为5以上的话,

print"medium"#显示medium。

else#其他,

print"small"#显示small。

end#分歧结束。

unless~end

与if相反,在条件不满足时才进行某些处理的情况下使用unless语句。

a=7#为变量a赋值代入7。

unlessa>=10#如果a不为10以上的话,

print"small"#显示small。

end#分歧结束。

case~end

在条件为特定的变量值进行分歧的情况下使用case语句会更方便。

a=0#为变量a赋值代入0。

casea#分歧开始。

when0#当a为0时,

print"零"#显示零。

when1#当a为1时,

print"壹"#显示壹。

when2#当a为2时,

print"贰"#显示贰。

end#分歧结束。

把第一行a=后面的0改为1和2,然后再来看看分歧的结果吧。

当a代入1时会显示“壹”,代入2时会显示“贰”。

条件运算符

使用符号?

和:

也是运算符形式的条件分歧语句。

a=3

p(a>=10?

"big":

"small")#=>"small"

这个示例的意思是,变量a的值在10以上的话就显示"big",9以下的话就显示"small"。

条件运算符的语法是「条件?

真时的值:

伪时的值」。

上述的条件是a>=10,真时的值为"big",伪时的值为"small",会根据条件是否满足来决定使用?

或:

的值。

当然使用if语句也能完成同样的事情。

a=3

ifa>=10

p"big"

else

p"small"

end

使用if语句的语法会像上面写的那样,但是使用条件运算符语句会更加简洁。

该语句在当前的脚本中也使用得很多,所以最好事先记住。

重复进行特定的处理就要使用循环。

while~end

在满足特定条件期间进行循环的情况下使用while语句。

a=0#为变量a赋值代入0。

i=1#为变量i赋值代入1。

whilei<=5#当变量i为5以下时循环开始(重复以下处理),

a+=i#变量a加上i的值。

i+=1#变量i的值增加1。

end#循环结束。

pa#显示计算结果。

这个示例是求从1到5这五个数字总和的程序。

在这里,变量i是用来产生从1到5这五个数字用的。

当然变量名也可以不用i,一般情况下循环处理用的变量会使用i、j、k为名称。

那么,这个程序最重要的是i+=1这行。

如果没有这行i的值永远为1,而i<=5的条件也会一直满足,就会成为无限循环。

因此,这里每次都向i加上1使得i的值依次变为2、3、4、5、6从而使得循环结束。

变量a和i的数值变化,如下表所示。

循环

a的值

i的值

初始状态

0

1

1次后

1

2

2次后

3

3

3次后

6

4

4次后

10

5

5次后

15

6

循环5次后,在a的数值里面实际上进行了1+2+3+4+5的计算,i的值也超过了5而执行end使得循环结束。

然后以p命令显示最终a的值,就会显示出答案15。

变化范围

数值的范围,例如类似于「从1到5」这样的概念就称为变化范围。

1..5

上述示例表示「从1到5」的意思。

使用..运算符,就能作成一个变化范围。

而且,使用...运算符也可以。

1...5

和..不同的是「不含最后一个数」。

所以,这种情况实际上表示的是「从1到4」的意思。

for~in~end

想在变化范围表示的范围内循环的情况下使用for语句。

a=0#为变量a赋值代入0。

foriin1..5#变量i的值按从1到5的范围变化,

a+=i#变量a加上i的值。

end#循环结束。

pa#显示计算结果。

这个示例和使用while语句的示例完全相同,也是求从1到5这五个数字总和的程序,但比使用while的情况更加简洁。

在while中变量i加上1表示的是从1到5的范围,然而在for中是用变量i按「从1到5的范围」的顺序代入来表示。

表面看起来不同,但实际上进行的是意思完全相同的处理。

Ruby中有许多语法,循环中也存在各种各样不同的方法。

在不同语法使用中,请按照这个示例提示的「让编写更简便」的方式来思考。

实际上,如果理解了条件分歧和循环的话,就能进行大部分逻辑运算了。

loopdo~end

未指定循环次数和条件的情况下,也就是想进行无限循环时使用loop语句。

这个与while和for语句的性质稍微有所不同,一般情况下没有必要注意。

i=0#为变量i赋值代入0。

loopdo#循环开始。

i+=1#变量i的值增加1。

pi#显示变量i的值。

end#循环结束。

这个示例是「一边把i的值加上1,一边显示i的值」的程序,没有结束条件。

一旦运行的话就会连续显示1、2、3……。

如果这种对话框不断显示的话,就算要结束程序也是不可能的,只能按着F12键不放强行关闭对话框,并点击右上方的结束按钮关闭程序。

break

想中途中断循环就要使用break命令。

i=0#为变量i赋值代入0。

loopdo#循环开始。

i+=1#变量i的值增加1。

ifi==5#如果变量i的值为5的话,

break#中断循环。

end#条件分歧结束。

pi#显示变量i的值。

end#循环结束。

上述示例在程序中加上了「i等于5的就中断循环」的条件。

运行该程序,显示1、2、3、4就结束了。

break即使在while和for等其它方法作成的循环中也能使用。

next

在不中断循环的情况下,跳过本次循环而进入下一次循环时使用next命令。

foriin1..5#变量i的值按从1到5的范围变化,

ifi==3#如果变量i的值为3的话,

next#进入下一次循环。

end#条件分歧结束。

pi#显示变量i的值。

end#循环结束。

运行这个示例,会显示1、2、4、5。

数字的计算和字符串的显示等,能够进行某种处理的被命名的功能称为函数。

函数的使用

我们一直在使用的exi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1