仙剑之十里坡

标题: [提问]如何看懂脚本 [打印本页]

作者: 冷星云    时间: 2011-7-18 09:51
标题: [提问]如何看懂脚本
1.常用的关键词有哪些?
2.定义的变量有哪几种?
3.编写的方法类似于VB吗?
4.定义的变量和游戏内的坐标都有哪些联系?

5.有没有推荐学习的书籍。

PS:求助于技术宅的某雨大叔~ 为防止这帖有灌水内容,一切与主题无关的纯水回帖将有某阳大叔扣分处理(记得大概是一次扣回帖积分的10倍),欢迎懂脚本的童鞋一起回答。
作者: BlackFeather    时间: 2011-7-18 10:20
关键词有很多种,比如if else elsif(这个可能记错了) case when update dispose x y z(三个坐标)之类(此处肯定不是全部常用词)

变量分三种 普通变量名字前不加符号,只能在一个方法内使用。还有一种变量前面加@,可以再同一个类里面使用。前面加$的是全局变量。全局使用不过要注意存读档不会记录/读取全局变量即而且你在这儿触发了全局变量的改变。直接读档的话全局变量是不变的……当然,重新开启游戏就会改变了……
作者: 七千    时间: 2011-7-18 11:38
看F1吧少年
作者: 残阳泪珀    时间: 2011-7-18 15:00
回复 1# 風神涟


    如果你懂VB的话RGSS看起来不难 起码基本的语句和end标识符是一样的 变量的分类黑猫(貌似现在是黑毛了)说的比较清楚了 当然与VB不同的是RGSS不需要定义变量类型 其他的还是问研究RGSS的人吧 我仅限于能看懂
作者: BlackFeather    时间: 2011-7-18 15:03
现在回答一下4:
每个图片、窗口、文字都是有xyz三个坐标确定位置的
所有的坐标都是以变量的形式储存的
作者: 黄泉    时间: 2011-7-19 15:07
F1看过之后,一声霹雳我直接退化三千万年~拥有北京户口
作者: 七夕小雨    时间: 2011-7-23 08:19
我来对号入座吧~

1.常用关键字有哪些
module 模块
RUBY有一些面向切面的编程思想在里面,所以采用了模块组装类的总体思想,当然你不用切面编程就拉倒了,模块的出现,让多继承流用起来得心应手(也是因为ruby木有接口- -)
class 类
ruby描述对象的关键字,基本概念依然是封装继承多态,只是访问修饰符比较个性,可以看看game类的算法
def 函数定义关键字
ruby的函数定义很随意的 可以 def a(a,b)也可以def a a,b当然这种随意也导致代码很凌乱,不过默认的都还好,我当时看前辈们的win32AP的调用方法,连括号都找不到,我以为这个类有什么特别的地方,结果只是函数定义的随意性上- -囧……
还有稍微提一下的就是initialize是类的构造函数,和一般的编程语言的够咱函数差异很大- -,当然构造函数还是无法继承,无返回值。
还有些符号的关键字
::由于ruby没有静态变量,那么可以直接用::访问其他模块的变量-v-……(据说内存很容易报错……很少用)
...和..这么个货算是ruby很个性的符号了,主要用于循环 for i in 0..10表示0~10 for i in 0...10
表示0~9
其余的符号,都和别的差不多~ 什么 + - * / = ()神马 || && and or当然要注意一下,and or的优先级比||&&要低
然后条件语句
if (条件)...end

if (条件)
内容(喵了个咪)
else if(条件)
.....
else
end

case(变量)
when 条件1
内容1
when 条件2
内容2
else
内容3
end

循环结构
for i in x...y
内容
end
也可以
@act = [1,2,3,4,5]
for i in @act
内容(当然@act数组内可以全部储存对象~如果是对象i就可以是对应数组编号的实例化对象了- -很好用)
end

当然还有while和loop do形式的,我就不多说了,想你应该明白
2.变量的定义方法有哪些
首先ruby对于内存的划分没有静态区域,所以ruby出现了一种叫做权限修饰符的东西(自己取的名字)
$代表全部变量(仅在同一模块中),寿命到模块被消亡截止
@代表默认,可以在同一个类中随意使用,也就寿命存活时间是该对象消亡的时间
@@零时变量,只能在同一个方法中使用,方法结束,寿命消亡。

访问修饰符
attr_reader 只读
attr_write 只写
attr_accessor 可读可写
具体使用方法参看game算法类

变量的具体定义
ruby是纯面向对象语言,根本木有基本数据类型,数据类型全部都是引用类型,都是包装类的形式
比如 @a = 11 定义出来是个int
@a = 11.to_s定义出来就是个string
栈区全部都是类似0x0001的堆区指向性内存地址,堆区里面才村的是数据,所以金山游侠一类只能搜索栈区内存的游戏修改器根本改不了RM的游戏- -

3.编写方法
VB和RUBY倒是有些相似的地方,比如语法,但是vb就编程思想上比ruby落后了至少30年,那时候估计还不知道面向切面是个什么货吧。变量的定义、方法,类都有很多差异,你可以带着过去的经验来,但是万不可混为一谈


4.定义的变量和游戏内的坐标都有哪些联系?
游戏内的坐标存在一个相对坐标和绝对坐标的问题
绝对坐标又是通过相对坐标*128得到的,这一部分的坐标都是在Game_Character 1定义的
使用这种算法,也是为了人物行走可以精确的走出来“一格”
同时也是为了屏幕滚动算法简介

关于学习的书籍嘛- -……我真的觉得这种木有什么难度的弱语言不需要什么书籍,倒是NetBeans中有jruby的平台,也就是说,可以用java做底层,ruby做嵌套脚本,这样才能所有成就啊……
作者: BlackFeather    时间: 2011-7-23 09:00
我来对号入座吧~

1.常用关键字有哪些
module 模块
RUBY有一些面向切面的编程思想在里面,所以采用了模 ...
七夕小雨 发表于 2011-7-23 08:19



    绝对不是elseif……我记得是五个字母
作者: 七夕小雨    时间: 2011-7-23 09:08
标题: 变成
- -你说的是elsif
我少打一个空格- -else if- -你试试看能不能变成关键字不就好了

一个意思可以有很多表述方式,比如for循环可以做到的,while循环也可以做到一样

就像汉语,我吃了,和吃过了几乎是一个意思一样
作者: BlackFeather    时间: 2011-7-23 10:09
- -你说的是elsif
我少打一个空格- -else if- -你试试看能不能变成关键字不就好了

一个意思可以有很多表 ...
七夕小雨 发表于 2011-7-23 09:08



    漏个空格完全就是两个了……




欢迎光临 仙剑之十里坡 (http://palslp.com/BBS/) Powered by Discuz! X2.5