RMXP脚本Ruby的语法Word文档下载推荐.docx
《RMXP脚本Ruby的语法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《RMXP脚本Ruby的语法Word文档下载推荐.docx(78页珍藏版)》请在冰豆网上搜索。
学习了英文的语法在使用英文时,增加词汇量(掌握库的使用方法)则是非常必要的。
这个「脚本入门」基础篇是以学习语法为重点。
最开始学习时或许会产生「学习语法,到底有什么用」的厌烦感,应用逻辑思维来理解基本语法就能突破最初的屏障,仔细阅读参考程序记住实际的使用方法,其实并不是多么困难的事情。
那么现在就开始吧!
是关于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#=>
余数的计算
求余数(除法的余数),是使用%符号。
p14%4#=>
2
p13%4#=>
1
p12%4#=>
0
运行示例第一行的算式,是求14除以4的余数,就会输出计算结果2。
乘方的计算
没必要强迫记住,乘方(同一个数指定次数的相乘)是使用**符号。
p2**4#=>
这个示例求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"
#=>
"
p'
RPGMakerXP'
p命令会导致双引号和字符串一起输出,所以使用print命令代替。
print"
RPGMakerXP
这次双引号就没有了。
p是按照人们容易理解的形式来显示的命令,所以它会加上双引号来强调字符串。
print和p相似,但它只显示字符串本身。
为变量赋值
和数字一样,字符串也能代入变量为该变量赋值。
a="
printa#=>
字符串也能作加法,字符串加上字符串,就会得到一个连接起来的字符串为答案。
我的"
b="
printa+b#=>
我的RPGMakerXP
还可以作乘法,字符串乘以一个整数,就会得到该整数次重复的字符串为答案。
printa*2#=>
RPGMakerXPRPGMakerXP
控制码
字符串中的\符号,是作为一段连续文字中换行等操作使用的特殊文字。
比如\n是表示换行。
控制码有\t(Tab)和\s(空格)等多种代码,另外\n表示换行,重叠起来的\\表示\文字本身,这两个一定要记住。
\\10,290"
printa+"
\n"
+b#=>
#\10,290
单引号'
中间的字符串,除\\(\符号本身)和\'
(单引号)外不能使用任何的控制码。
这在打算原样显示文字本身的情况下使用会十分方便。
print'
RPGMakerXP\n'
RPGMakerXP\n
\符号本身即为计算机内部的控制码。
以后实际字符串操作中应注意正确使用。
内嵌表达式
在字符串里面,可以用#{变量名}的形式把变量的内容嵌入在字符串当中。
game="
RPG"
#{game}MakerXP"
上述示例里,第一行是为game变量赋值代入字符串“RPG”。
第二行里面,其中#{game}是表示直接嵌入变量game的值字符串“RPG”,和后面的“MakerXP”组合在一起,从而输出一个新的字符串。
RPGXP的事件指令「显示文章」里,在文章中使用\V[n]和\N[n]控制码可以把变量的值和角色的名称作为信息嵌入文字中,这个功能好像和那个十分相似。
这个功能,让我们举例来说明在预置脚本中应如何使用。
print("
文件#{filename}没找到。
)
print的显示内容应附加上括号(),如果其优先顺序不易混淆的话可以省略(本章print的使用示例介绍中全部省略了括号)。
预置脚本中基本上都统一使用有括号,所以在这儿也加上一个。
这个是当然,
文件"
+filename+"
没找到。
像这样写也可以,使用内嵌表达式的方法会使读取程序变得很容易。
另外内嵌表达式和控制码一样,在单引号'
中间的字符串里使用也会无效。
满足特定的条件与否,之后的动作会根据其不同而改变就叫作条件分歧。
比较运算符
在具体地学习处理条件分歧的方法之前,要先记住条件构成中使用的运算符。
下面6个运算符称为比较运算符。
使用这些运算符,和给予的条件(数字和字符串)相比较,然后返回结果。
==
相等
=
不相等
<
小于
>
大于
小于或相等
大于或相等
这里一定要注意的是,判断相等的运算符不是=而是==。
像已学习过的那样,所谓=符号表示的不是比较而是代入。
请注意不要弄混淆了。
真伪值
比较运算的运算结果就称为真伪值。
有真(正确)、伪(错误)两种情况。
比较后是正确的话为true值,是错误的话就为false值。
请试试看吧。
p("
早安"
=="
)#=>
true
晚安"
false
p(3+1==3+5)#=>
p(3+1==2+2)#=>
逻辑运算符
下面6个运算符称为逻辑运算符。
and
&
「~,与,~」的意思
or
||
「~,或,~」的意思
not
「非~」的意思
英文单词运算符和符号运算符,无论用哪个都是一样的。
在预置脚本中运用的主要是英文单词。
使用这些逻辑运算符就能指定更加复杂的条件。
p(100>
77and1+1==2)#=>
77&
1+1==2)#=>
上述示例中,第一行和第二行表示的都是一个内容「100大于77同时1+1等于2」。
不用说100是比77大的整数,1+1答案也为2,两个运算都成立。
所以输出结果就为true(真,正确)。
那么,看下一个算式吧。
p(1+1==3or2+2==3)#=>
p(1+1==3||2+2==3)#=>
上述示例中,第一行和第二行表示的也都是一个内容「1+1等于3或2+2等于3」。
很显然,1+1不等于3,2+2也不等于3,这样两个运算都不成立。
比较运算符or(||)是只要有一个运算成立就为ture(真,正确),而这里两个运算全都不成立,所以输出结果就为false(伪,错误)。
另外,not(!
)和上面的例子稍微有些不同,not(!
)表示的内容为后面的条件不成立。
可以理解为颠倒true或false的运算符。
p(nottrue)#=>
p(!
true)#=>
上述示例中的内容是「非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。
elsifa>
=5#除此之外,如果a为5以上的话,
medium"
#显示medium。
else#其他,
small"
#显示small。
unless~end
与if相反,在条件不满足时才进行某些处理的情况下使用unless语句。
unlessa>
=10#如果a不为10以上的话,
case~end
在条件为特定的变量值进行分歧的情况下使用case语句会更方便。
a=0#为变量a赋值代入0。
casea#分歧开始。
when0#当a为0时,
零"
#显示零。
when1#当a为1时,
壹"
#显示壹。
when2#当a为2时,
贰"
#显示贰。
把第一行a=后面的0改为1和2,然后再来看看分歧的结果吧。
当a代入1时会显示“壹”,代入2时会显示“贰”。
条件运算符
使用符号?
和:
也是运算符形式的条件分歧语句。
a=3
p(a>
=10?
:
这个示例的意思是,变量a的值在10以上的话就显示"
,9以下的话就显示"
。
条件运算符的语法是「条件?
真时的值:
伪时的值」。
上述的条件是a>
=10,真时的值为"
,伪时的值为"
,会根据条件是否满足来决定使用?
或:
的值。
当然使用if语句也能完成同样的事情。
=10
p"
else
end
使用if语句的语法会像上面写的那样,但是使用条件运算符语句会更加简洁。
该语句在当前的脚本中也使用得很多,所以最好事先记住。
重复进行特定的处理就要使用循环。
while~end
在满足特定条件期间进行循环的情况下使用while语句。
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的值
初始状态
1
1次后
2
2次后
3
3次后
6
4
4次后
10
5
5次后
15
循环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语句。
foriin1..5#变量i的值按从1到5的范围变化,
这个示例和使用while语句的示例完全相同,也是求从1到5这五个数字总和的程序,但比使用while的情况更加简洁。
在while中变量i加上1表示的是从1到5的范围,然而在for中是用变量i按「从1到5的范围」的顺序代入来表示。
表面看起来不同,但实际上进行的是意思完全相同的处理。
Ruby中有许多语法,循环中也存在各种各样不同的方法。
在不同语法使用中,请按照这个示例提示的「让编写更简便」的方式来思考。
实际上,如果理解了条件分歧和循环的话,就能进行大部分逻辑运算了。
loopdo~end
未指定循环次数和条件的情况下,也就是想进行无限循环时使用loop语句。
这个与while和for语句的性质稍微有所不同,一般情况下没有必要注意。
i=0#为变量i赋值代入0。
loopdo#循环开始。
pi#显示变量i的值。
这个示例是「一边把i的值加上1,一边显示i的值」的程序,没有结束条件。
一旦运行的话就会连续显示1、2、3……。
如果这种对话框不断显示的话,就算要结束程序也是不可能的,只能按着F12键不放强行关闭对话框,并点击右上方的结束按钮关闭程序。
break
想中途中断循环就要使用break命令。
ifi==5#如果变量i的值为5的话,
break#中断循环。
end#条件分歧结束。
上述示例在程序中加上了「i等于5的就中断循环」的条件。
运行该程序,显示1、2、3、4就结束了。
break即使在while和for等其它方法作成的循环中也能使用。
next
在不中断循环的情况下,跳过本次循环而进入下一次循环时使用next命令。
ifi==3#如果变量i的值为3的话,
next#进入下一次循环。
运行这个示例,会显示1、2、4、5。
数字的计算和字符串的显示等,能够进行某种处理的被命名的功能称为函数。
函数的使用
我们一直在使用的exi