赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 1730 |
最后登录 | 2018-8-25 |
在线时间 | 12 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 98
- 在线时间
- 12 小时
- 注册时间
- 2008-4-29
- 帖子
- 461
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
RGSS里出现类和对象是我学习时搞不懂的..........希望zh99998不要删掉这个.
(不要以为教程是翻译的,绝对是名叫淘金鸭的那个傻瓜原创的)
(我很想把方法叫做函数…..)
def定义方法,以end结束
class定义类,以end结束
假设定义一个类
class Practice
def class_system
@coin = 10
end
end
这时已经定义了一个类.
定义对象的方法:
对象名 = 类名.new
在RGSS和Ruby中是不分变量类型的,只分变量的作用域.
我们可以这样为我们的类定义对象: game_object = Practice.new
在类名后加.new即为生成新的该类的对象.
在我们的类中,def class_system是一个方法,这种方法在类中称为成员方法(好理解点就是方法成员)
但是我们初始化一个对象时并不生成class_system方法中的@coin = 10.
如果我们想在对象开始时就有coin这个变量,我们可以使用类变量:
class Practice
@@coin = 10
end
这样对象初始化时,就有了一个名为coin的类变量(类变量的引用和定义要加@@,即@@coin).
但是使用类变量就是最好的做法吗?似乎有些多余,实例变量可以在类中所有函数调用,但是我们又想在对象初始化时就有coin这个变量,所以,我们要学到在类中非常重要的方法—初始化方法,初始化方法是在对象初始化时直接执行的方法.将我们的类改为:
class Practice
def initialize
@coin = 10
end
end
这时再添加game_object = Practice.new
对象game_object中就有了@coin这个变量,无需像以前那样调用class_system .
使用对象中成员方法的方法: 对象名.方法名(参数)
方法的参数:
class Practice
def class_system(coin_in)
@coin = coin_in + 10
end
end
现在又改变了类,我们发现class_system(coin),这是做什么的呢?其实是定义一个变量coin,这个变量只在方法class_system中有效!coin_in接收外部来的实际参数.
如果在该类下方添加这些:
game_coin = Practice.new
game_coin.class_system(55)
这样@coin就等于55+10也就是65.
初始化函数同样可以有参数:
class Practice
def initialize(coin_in)
@coin = coin_in+ 10
end
end
game_coin = Practice.new(55)
这样game_coin中的@coin直接等于65.
现在我们编写一个计算税款的类,假设你的游戏中需要这个.
class Shuikuan #类名,该类在知道税款的情况下计算税率.
def initialize(shuliang,shuilv) #初始化方法,有变量做税率和数量参数
@shuikuan = shuliang * shuilv #税款等于数量乘以税率
end
def return_shuikuan #返回税款的方法
return @shuikuan #将税款这个变量作为返回值返回
end
end我们使用它可以这样:
shuikuan_obj = shuikuan.new(1000,0.02)
shuikuan = shuikuan_obj.return_shuikuan
该类有多此一举之嫌疑,仅作为学习使用.
如果希望我写下一篇教程请回帖说. |
|