赞 | 0 |
VIP | 0 |
好人卡 | 9 |
积分 | 1 |
经验 | -14 |
最后登录 | 2013-3-11 |
在线时间 | 616 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 616 小时
- 注册时间
- 2010-10-29
- 帖子
- 463
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
首先,我想解释一下标题。
这个教程取名字叫 眩晕 的原因是因为鄙人第一次写脚本教程,所以很多人看了这个估计都会晕。
(现在还是没有想好如何给大家解释加引号的问题。。。)
这个不是F1的解说,所以说比较混乱。
但鄙人还是认为这是一个不错的教程,请大家好好欣赏吧!
很抱歉,因为平板对使用代码不方便,于是只好普通方法了。。。
既然大家是来学习RGSS3的,那么,你知道RSGG3是什么吗?
RGSS3,就是Ruby Game Scripting System 3 的简称。是Ruby的拓展库。
那么Ruby 是什么?
如果你去英文词典查:“Ruby”的话,你会查出:“红宝石”这个翻译?那么它到底是什么?
Ruby——是由20世纪90年代由日本人松本行弘创造的面向对象程序语言。主要用于中,小型工程的开发,在中小型工程中开发比更早出现的Java更加节省时间,和成本。于是Enterbrain公司才决定用这种简洁,高效的语言创造出RGSS。
那么,什么是面向对象?
面向对象,就是相对于面向过程的一种抽象方法。以后我们会详细探讨,这里先给出基础的解释。
在基础的解释之前,你要先明白以下2个说法:
1:如果采用原理是现实生活中的原理,则游戏会超级仿真。
很好理解,如果你做了个游戏。将所有学科的原理都加上。那么,恭喜你,你不用设置数据库了,这个游戏会自动产生生命,道具,敌人。。。这将会是超级自由游戏。
2:脚本方式越接近人类语言,脚本越容易理解。
你有没有设想过,就给电脑输入中文,之后游戏脚本就制造出来了呢?那么我很抱歉的告诉你,不行。因为中文等语言有多义词等特殊情况,所以不行。
但是我们最好做到接近人类语言,之后你就会理解了。
你有没有想过自己创造一个事件指令,比如说,叫做:显示提示信息的一个事件?
现在,假设RMVA的事件里面有一个叫创建窗口的事件,那么你要制作一个任务公告板系统,那么,你会怎么做呢?
创建窗口,宽544,高416。
显示文字,“任务公告板”,32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
显示文字,“操作说明”,32像素,X坐标:2;Y坐标:50,颜色:蓝,半透明:False
显示选项,“查看任务”、“已经解决”、“离开”、宽:XX,高:XX,X:XXX,Y:XXX,横排,栏数:XXX⋯⋯
条件分歧:如果选择为1
则:⋯⋯
如果选项为2:
则:⋯⋯
于是你一点点的重复同样的步骤来创建同样大小,同样颜色,同样透明度,同样格式的东西⋯⋯
你多么希望有一个叫做:创建任务用文字,创建任务用选项的事件啊!
于是你想到了面向对象:
那么,我来弄一个自己的事件⋯⋯
定义 显示任务用文字,需要输入以下参数:文字,X坐标,Y坐标
显示文字(这是一个事件指令):文字(这个等于上面的参数:文字),32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
结束定义
于是,你又搞了一个新的事件
显示任务用文字:“任务公告版”,2,2
这个跟之前的:
显示文字,“任务公告板”,32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
达到的效果是一样的
所以,这就是面向对象的一个应用。如果你把事件全部转换为脚本之后,就是一个新的“方法”哦!
还有一个更好理解的应用
事件党:
我要创造一个纯事件的战斗。
那么你会怎么弄怪物的属性值呢?
一般来讲,我们应该弄几个变量来设定为怪物的属性
比如说:怪物1的hp,怪物1的atk等等等
怪物2的hp,怪物2atk
之后还有各个角色的属性⋯⋯
之后就是逻辑判断流程⋯⋯
等一等,你是怎么将在逻辑上新建一个怪物的?
你拷贝了几个变量⋯⋯
那么你怎么读取怪物的属性?
你选择了 变量XX号
难道不应该是这样思考吗?新建一个怪物只是新建了一个空的怪物,之后我修改怪物:怪物No1:Slime,攻击力:12,防御力:8⋯⋯
之后读取方式是:怪物1的攻击力,怪物2的名字 等等
难道第二种方法不是更好理解吗?
别看你现在搞得懂变量代表着什么,你进行超复杂的操作时你就得一遍一遍地查看变量的备注,这样比记住:怪物1的攻击力这种变量名称难多了。
言归正传:
在20世纪80年代末,人们发现了一些问题。传统的语言无法自定义一个方法来显示内容,以BASIC举例。
看这段代码:
PRINT "Hello World!"
这样,运行时:屏幕上会出现:
Hello World!
但是不太美观,不是吗?于是就有了脑残的方法。
PRINT "----------------------"
PRINT " Hello World!"
PRINT "----------------------"
这样,屏幕上就会出现:
----------------------
Hello World!
----------------------
看起来好一些,不是吗?
于是就有脑残的程序员,为了输出信息,疯狂拷贝粘贴这段代码,这样脚本长不说,出现错误或者要更改需要改太多地方了。于是程序员便开始思考一个更高效的方法:
这个代码: PRINT 不就是需要1个参数吗?
按照数学函数观点来讲就是:
PRINT(x),而我们为什么不可以定义一个函数叫做:CUS_PRINT(x)呢?于是程序员修改了BASIC语言函数库,定义了CUS_PRINT这种方法
而CUS_PRINT(x)就是
PRINT "----------------------"
PRINT x
PRINT "----------------------"
所以:CUS_PRINT(" Hello World!")就等于:
PRINT "----------------------"
PRINT " Hello World!"
PRINT "----------------------"
运行结果就是:
----------------------
Hello World!
----------------------
简洁多了,不是吗?
之后的语言不希望每个程序员都得去改这个脚本内核,于是给了大家自己定义的方便⋯⋯这个以后再讲。
那么,开始进入正题。
第一课:从显示文章到消息框。
RM你用的第一个事件是什么?你最常用的事件是什么?基本上必不可少的事件是什么?
那就是:显示文章
显示文章提供了基础的消息需要。
那么我们学脚本,当然有用脚本实现事件的方法,但是,我们要 高~级~ 一点啊!
那么,我们就用最经典的hello, world 来示范吧!
什么是hello, world?
字面上:你好,世界
实际上:这个是每个编程语言必须走过的一步,它在编程历史上的地位无法改变。一切语言,一切主流教程的第一个练习:
你好,世界!
高级的方法⋯⋯
我们这次要用一个叫做 msgbox 的指令来完成任务,
介绍:msgbox
是message box (消息框)的简写,总共有1个常用参数(其他的我不知道有没有,VB是有的。大概也不会用到),而参数都是通过括号“()”[注意,全部都是英文状态下的括号!]
而且,你有没有遇到过这种情况:
A说:什么?
B说:A说了什么?
C说:什么 (他的意思是,A说了2个字:什,么)
B说:我问:A说了什么?
C说:他说了2个字:什,么
B说:哦,我明白了⋯⋯
那么我们为了防止歧义,对于所有不希望代指的东西,比如说刚才提到的”什么“用英文状态下的引号括住。
大家可以看一下之前的BASIC脚本,中间的文本全部用引号扩起来了的⋯⋯
那么,打开脚本编辑器:
新建(Insert)一个脚本(在main上面),输入以下内容
msgbox ("hello, world")
之后保存,测试。之后看到对话框内容:
hello, world
恭喜你,你踏出了走向RGSS3高手的第一步!
——————————————————————————————————————————
如果大家有兴趣,可以去 Try Ruby那里学一下Ruby语法哦!
第二课:数据类型 & 变量 &注释
1:数据类型
数据类型,就是你看到的一切东西的类型,下面介绍主要的数据类型
整数 Integer 例子: 3,82229993
字符串 String 例子: 你好 以及一切各种语言组成的句子
小数(可以细分) 例子: 3.14 70.00
布林 Boolean 例子:true false
注意:
字符串类型在一般使用时需要用英文引号括住。
像 70.00 这样的数,也被归类为 小数 类型
true false 在做为布林类型时 不要 加引号,否则将会被视为字符串,但我们一般说true,false默认是布林型
每种类型都有自己的范围,但一般使用时都不会超出这个范围。
那么,这个东西有什么用?
你得先明白一点:电脑是很笨的
电脑看见你输入 250, 他不知道你是想输入一个叫250的数字还是一个骂别人250的话。
所以,你得告诉电脑让他怎么处理你的数据。。。
像我们用的事件中的变量全都是 整数类型 的数据,这也就是为什么你用变量计算 10÷3 得到结果为 3 的原因
练习:请将以下数据归类!
8377373 "再见" true "60" 34.75 true
2:变量
变量(variable)是区别于常量的一种量,常量就是~~~188387 5 34.272766337848 等等。。。
而变量就是 x。。。
变量的变就在于你可以随时更改他的值。
1这个数字你无论如何都改变不了它所代表的值,但是- x 你想取哪个值就取哪个值。。。
在rgss3中,变量的定义方法是这样的
变量名称 = 值
例子:
x = 3
name = "shenyuwoton"
@part = true
@@hello = "false"
$pi = 3.1415926
看起来还算简单,不是吗?
接下来解释一下这2个部分的意义所在
变量名称:
只是一个名字,自己随便起名。(最好好记。。)(别太奇怪,否则会出错。。)
如果前面什么都不加,那就是一般的变量。
如果前面加 美元符号,那么就是全局变量(说白了就是你在哪里都可以读取到的变量。)
其他的我先不解释(有关系到“类”)
值:
必须按照数据格式即可。
变量的读取:
很简单,比如说我已经制造了一个叫 x 的变量,在你需要引用的地方输入 x 即可!
举例;
msgbox (x) #(这是一个注释,不会运行的哦! ) 弹出对话框:显示变量 x
实验用脚本:
x = 3
msgbox (x) #没有加引号,代指 x 这个变量,弹出窗口 显示内容:3
msgbox ("x") #加了引号,代指这个字符串,弹出窗口 显示内容:x
3:注释
大家肯定已经看到了,我之前用了警号 #,用作注释,接下来简单介绍一下注释。
注释,就是为了方便其他编辑者或者将来的自己更好地理解某一段脚本是干什么用的不会被执行的一行或者多行文字。
单行注释:
格式:
# 这里畅所欲言!
msgbox ("这里的内容还是要被执行的。。。")
多行注释
格式:
=begin
msgbox ("hello")
这里是多行注释!!
=end
msgbox ("这里不是多行注释。。。")
好了,今天的就讲到这里!
——------------
ps 如果觉得rgss3对于自己太难的话,可以去试一试Scratch哦!
rgss3 第三课:
数组
1:数组
数组就是一组数,也就是一串变量。一个基本的数组就象这样:
array = [1,3,5,7,9]
也就是说,数组应当包括两部分
名称 = 内容
例子:
$names = ["Mike","Jimmy"]
mixed = ["hello",1.23,37,true]
从上面的例子我们可以看出,数组的名称部分几乎与变量是一样的。其它部分按照以下格式书写:
name = [元素1,元素2,元素3] #可以一直到 元素 n
而这其中的元素可以是任意类型的数据(包括变量,甚至数组!)
数组元素的获取:
好了,现在我们已经定义了一个数组
array = [1,3,5,7,9]
那么我们怎么获取里面的数值呢?
试一下这段代码:
msgbox (array[0]) #弹出array这个数组的第一个元素 =》 1
也就是说,如果有一个数组叫做 name的话,获取它第n个元素的表达式是
name[n-1]
同时你还可以用这个方法重新改变数组中某一元素的值。
array[1]=2
msgbox array #弹出对话框 [1, 2, 5, 7, 9]
还有些比较有趣的东西。。。
如果:
array[10]=20 #那么这个数组会怎么样那?
msgbox array #试一试吧!
结果:弹出对话框 :
[1, 2, 5, 7, 9, nil, nil, nil, nil, nil, 20] #nil就是 空 的意思哦
很有趣吧。。。。。
有关数组的其他东西
获取数组长度:
array.length
二维数组
如果你定义一个数组像这样:
hello = [[1,2,3],[65,92,1000]]
那么你就定义了一个二维数组
获取方法:
hello[1][2] # 1000
同理,你还可以通过这种方法创建三维,乃至n维数组。。。
今天就到这里!
——--------------
没想到 yanfly的技能系统与XAS冲突呢,好好修改吧!
|
评分
-
查看全部评分
|