66RPG
本站首页
制作教程
文章作品
制作素材
原创游戏区
周边下载
本站论坛
 ※ 站内搜索
栏 目:
方 式:
关键词:
  
 ※ 教程分类
 RMXP 图文教学
 初级教学
 中级教学
 高级教学
 个人创意与研究
 RMXP 录像教学
 新人入门录像
 零散录像教学
 商业素材使用录像 ★
 周边教学
 美工 与 音乐
 RMXP 脚本发布
 游戏系统修改
 地图效果类
 战斗系统相关
 全新系统类
 API与高难度类
 RMVX 制作教学
 RMVX 初级教学
 RMVX 中级教程
 RMVX 高级教程
 RMVX 综合制作展
 ※ 无图目录 (按点击量横排序)


-- 66RPG全内容文字目录 --


 ※ 近期特色教学
秀秀RM脚本教程第一章 ( 66RPG, RPG MAKER XP教程 )
 本站首页→制作教程→中级教学

秀秀RM脚本教程第一章 [推荐]


教程作者:hide秀
首发网址:点此进入本教学的原始帖
适宜用户:新手

 教学正文:

  
主题贴:【 秀秀RM脚本教程第一章[发布预备] 】(原帖)(无图)(目录
hide秀  (2008-6-22 9:49:32)
秀秀RM脚本教程第一章
说明下。。。由于6R论坛的秀秀ID已经被注册掉了,所以用了hide秀。。。
大家好 第一次写教程 目的还是为了教会大家脚本 我写的教程都是以我的平时的编程思路来教大家的 方法也不是唯一的
希望大家能够理解我的思路并能够举一反三 话不多说了开始把

第一章 脚本的思路和构架
要写好脚本 策划构思很重要 通常好的构思可以事半N倍
接下来就举个足球游戏的例子 我们讨论的只是思路
1.1 模块划分
1.2 类 对象 属性
1.3 数据库管理
1.4 地图数据
1.5 球员数据
1.6 窗口
1.7 场景

# ------------------------
# 1.1模块划分
# ------------------------

#音效管理模块

module FOOTBALL_SE
def self.射门音效
播放射门音效
end

def self.带球音效
播放带球音效
end

def self.铲球音效
播放铲球音效
end
end

#动画贞数模块
module ANI_COOUNT

FB_铲球贞数 = 15
FB_左右脚假动作贞数 = 8
end

# 其他模块管理

module FOOTBALL_OTHER

FB_半场时间 = 45

FB_比赛贞数 = 60
FB_比赛人数 = 11

end



先简单的写了这么点 具体制作远远不止要定义这些

首先说明下几个定义
#符号 为注释符号 带#符号的一行程序不会被运行
如上述例子 # 其他模块管理 这一行不会运行 注释只为了给自己看

模块定义用 module
当然结束需要一个end

def 是定义方法(也可以认为是函数)
结束也需要一个end
大写英文字母开头的变量 认为是常量
上面的例子 FB_半场时间 = 45
意思就是 常量 FB_半场时间 = 45
模块的常量可以直接在外部调用
比如 FOOTBALL_OTHER.FB_半场时间
直接就取出FB_半场时间的值为45
模块方法定义有2种 一种直接def+方法名
这种方法只能在模块内部调用调用方法直接 用方法名调用
另外一种def self.方法名 该方法可以在模块外部调用
外部调用模块方法 只需要模块名+方法名
看上面的例子 比如要在外部调用音效管理模块中的 带球音效
只需要 FOOTBALL_SE.带球音效
有人说 播放音效 只需要在播放的时候直接调用播放音效的函数不就可以了为啥还要弄个模块
模块是为了方便于管理 可以把一些列音效整合在一个模块里面 需要的时候调用 这样好处多多
比如刚才的例子 你要修改一下播放带球的音效 只需要找到音效管理模块 改一下音效就可以了
很方便 如果不这么做 你就要在你成千上万行脚本中 去找到这么一句播放音效的函数 岂不累死?
总之划分模块好处多多 可以让程序看上去很有层次感
一个好的程序员一定会在模块划分上花些时间 以便于在以后的程序修改中 不会花太多的时间
具体的作用 举个简单的例子 大家可以跟着我试下

打开RM 脚本编辑器 在脚本中插入以下

module ABC
def self.全部小写英文字母输出
return "abcdefghijklmnopqrstuvwxyz"
end
end

然后在地图上建立一个事件 事件中插入脚本
输入 p ABC.全部小写英文字母输出
是不是输出了全部小写英文字母呢?

# ------------------------
# 1.2 类 对象 属性
# ------------------------

1.2 将和大家一起讨论下 非常重要的 类 对象 属性
这些是非常重要的 希望大家这里认真的学习下
先看一段程序

class 队员
attr_reader :年龄
attr_reader :身高
attr_reader :体重
attr_reader :姓名
def initialize(年龄,身高,体重,姓名)
@年龄 = 年龄
@身高 = 身高
@体重 = 体重
@姓名 = 姓名
end
end

class 我方 < 队员
attr_accessor :图形
attr_accessor :方向
def initialize(年龄,身高,体重,姓名)
super(年龄,身高,体重,姓名)
@图片 = Bitmap.new(路径)
@图形 = 0
@方向 = 0
@数据 = 我方数据.new(姓名).制作数据
end
def 射门力量
return @数据["射门力量"]
end
def 射门精度
return @数据["射门精度"]
end
def 带球速度
return @数据["带球速度"]
end
def 带球加速度
return @数据["带球加速度"]
end
def 抢断
return @数据["抢断"]
end
def 头球
return @数据["头球"]
end
def 身体素质
return @数据["射门精度"]
end
def 任意球
return @数据["射门精度"]
end
end

class 我方数据
def initialize(姓名)
@姓名 = load_data("目录/姓名.rxdata")
end
def 制作数据
hash = {
"射门力量" => @姓名[0],
"射门精度" => @姓名[1],
"带球速度" => @姓名[2],
"带球加速度" => @姓名[3],
"抢断" => @姓名[4],
"头球" => @姓名[5],
"身体素质" => @姓名[6],
"任意球" => @姓名[7],
}
return hash
end
end
end

好了写了这么多 我们开始分析吧
我们先来看类的定义
class 是用来定义类
如 class 队员 就定义了一个 队员 的类
类和模块一样也可以包含方法(函数) 长篇帖子,完整版请原地址查看

 
秋弦月 :
啊咧?!还真是秀秀啊~~~
呵呵,坐沙发支持!{/tp}
教程很有特色,学习中~{/qiang}{/qiang}
>hide秀 :
秋弦月啊~新人群好久没看到你了~~考玩试了吧~呵呵
>yangff :
@数据 = 我方数据.new(姓名).制作数据


可以酱紫吗?
>hide秀 :

档案 搜索 邮件 短信 引用 第4楼

@数据 = 我方数据.new(姓名).制作数据


可以酱紫吗?



饿??应该可以的吧
比如:

class My
def initialize(name)
@name = [1,2,3,4,5,6] if name == "zh"
end
def start
hash = {
"射门力量" => @name[0],
"射门精度" => @name[1],
"带球速度" => @name[2],
"带球加速度" => @name[3],
"抢断" => @name[4],
"头球" => @name[5],
"身体素质" => @name[6],
"任意球" => @name[7],
}
return hash
end
end


举个例子:
p My.new("zh").start 是可以返回hash的.....

>havealook :
希望LZ能坚持写下去{/hx}
现在好多脚本教程都讲到一半就停了{/ll}
害得我对脚本的了解还不到一半{/gg}{/gg}{/gg}
>yangff :

是调用方法阿
没仔细看

是可以
不过(***.new).start
不是更好些?
>hide秀 :
中文名字 。。。为了给新人们 看的明白些~
.......可以无视这些名称...写得时候最好用英文
类名是不可以用中文的。。。我这个纯属教程
>灼眼的夏娜 :
呵 ~ 出教程啦 加油= =`
>hitlerson :
我觉得最快的学习方法就是改脚本
>yangff :
nonono

我刚开始[/B]程序。炒了一遍又一便,虽然不理解,但是都背下来了(人家那时候才4、5岁)
>hide秀 :
惊现~小夏出现~~哈哈 拜一个~~{/wx}


关键字:

发布日期:2008-6-29 12:48:00 点击量:1


 上一篇:我要造房子!修改地图元件
 下一篇:阵型脚本
关于我们
支援本站
友情连接
站点目录
站内搜索



WWW.66RPG.COM,2005-2013 ^o^

备案序号:京ICP备05035415号



 
Web www.66rpg.com bbs.66rpg.com