设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: zdw1520366913
打印 上一主题 下一主题

[已经解决] 这里是新人一枚,使用rmvx ace一定需要学会ruby吗?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
11
发表于 2015-8-21 13:20:13 | 只看该作者
本帖最后由 寒冷魔王 于 2015-8-21 13:42 编辑

首先,对于是否必须需要学习Ruby,回答当然是“否”。
楼上的观点本人基本赞同,但是,楼上有一些没有解释到位的地方,这里用我的个人观点来阐述。

个人认为,Ruby有两个发展方向——
一个是Depth(深度),一个是Breadth(广度)。

怎么区分呢?
Depth表示学的深入,Breadth表示用途广泛。

首先,作为一门程序设计语言,Ruby是繁杂、丰富而强大的语言。Ruby具有繁杂的语法,丰富的表达方式,以及伴随着的强大的特性。
学得深意味着,你将了解更多的语言特性,更深入地理解语言层次、语法结构,掌握更多的用法和不为人知的表达方式。
举个例子来说,Ruby有个黑魔法,名字叫做“元编程”。元编程可以轻松改变Ruby的面貌。如同C++各种奇葩的模板泛型编程,在可以达到目的的同时,让你如同置身云间。
如上所说,Depth可以让你达到用Ruby玩Ruby的地步。

然而,与此同时,正因为Ruby是一门程序设计语言,它的用途是程序设计。这就是Breadth所涉及的了。
Breadth的目的在于用Ruby玩别人。——而这正是RM脚本所需要的。
程序设计,诸如制作战斗系统、绘制窗口、修改脚本等RM所常用的、有用的地方,都属于Breadth的范畴。
RM所需要的Ruby功底不深,翻一下预置脚本,就可以大致了解。

Ruby学习就像一个圆锥,最初身在锥顶,什么都不会,只能往深走。然而随着深入,可以进行的广度也就愈来愈大。Depth和Breath是相互关联的,二者相互统一。
除了喜欢用Ruby玩Ruby的兴趣爱好者外,学习Ruby的目的就是Breadth。如前所述,RM不需要太深的功力,在一定水平就可以进行Breadth。但是走Depth路线仍是不错的选择。如下是个人看法:
一、精简
我们想要构建一个Point类表示点,有x和y两个成员变量。类似C的结构体。
按照RM内置的脚本构成方式,可以这样写
  1. class Point
  2.   attr_accessor :x
  3.   attr_accessor :y
  4.   def initialize(x, y)
  5.     @x = x
  6.     @y = y
  7.   end
  8. end
复制代码
当我们知道了','的作用,以及attr_accessor的传递方式,完全可以这样写:
  1. class Point
  2.   attr_accessor :x, :y
  3.   def initialize(x, y)
  4.     @x, @y = x, y
  5.   end
  6. end
复制代码
然而实际上,如果知道Struct,这样写是最好的:
  1. Point = Struct.new(:x,:y)
复制代码
二、正确
Ruby的参数传递采取的是引用。这一点非常重要。
如果我们不清楚这一点,可能会写出如下代码:
  1. a = Array.new(10,0)
  2. b = Array.new(10,a)
复制代码
我们想要建立一个10*10的二维数组,每个元素都是0。
因为查了手册,所以我们很高兴能够看到一个简单的数组构建方法Array.new,于是我们迫不及待地采用了。
然而实际上,这个地方是有问题的。
  1. a[0]=1
  2. p b
复制代码
我们可以看到,b中所有子数组都变更了。这是为什么呢?
实际上,b包含的并不是10个数组,而是10个数组的引用。
由于构建对象时,Array.new传入参数是引用,而其并不采取clone方法,这使得每个引用都指向a。因此改变了a就会改变b。
正确的表达方式应该是:
  1. a = Array.new(10,0)
  2. b = Array.new(10) { a }
复制代码
三、效率
对程序而言,对效率影响最大的就是算法。——这属于Breadth的范畴。
同时具有影响的,还有数据结构、程序的构建方式等。
代码示例


如上,Depth对于Breadth的作用不可忽视,深入学习Ruby对于RM脚本的掌握具有很大作用。

P.S.我才不是被茵蒂克丝吸引来的呢!
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 14:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表