主题贴:【 秀秀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 队员 就定义了一个 队员 的类 类和模块一样也可以包含方法(函数) 长篇帖子,完整版请原地址查看
|