查看: 1914|回复: 6

[有事请教] 三个问题:如何重载?如何继承?如何添置额外的...

[复制链接]
梦石
0
星屑
695
在线时间
2 小时
注册时间
2016-10-22
回帖
1
发表于 2016-10-22 11:28:57 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 克里喵子 于 2016-10-22 11:32 编辑

【小广告】昨天看到Steam打超级大折所以买了VX和XP,MV虽然五折但是过百了我没敢自剁双手……不过小伙伴们可以快入一下,VX18、XP15、MV105,现在不买更待何时?!!
咳咳……言归正传……
问题1:Steam上购买的VX和XP资源非常少,请问怎么添加额外的资源进来?

我现正在学习RGSS,现在在看类的部分。
根据文档的介绍我写了这么个代码:

[pre lang="ruby" line="1" file="main"]class Person
  attr_reader:name
  attr_reader:age
  def initialize
    @name = "某人"
    @age = 30
  end
  def initialize(name,age)
    @name = name
    @age = age
  end
  def age
    @age
  end
  def name
    @name
  end
  def print_name
    msgbox @name
  end
  def speak(string)
    print("#{@name}说:#{string}")
  end
end

o = Person.new
print("name => #{o.name}\nage => 此人#{o.age}出头,有点地中海……\n")


p = Person.new("克里喵子",17)
print("name => #{p.name}\nage => 永远#{p.age}岁!\n")
p.speak("Hell-low~万恶的新世界!=_,=|||")[/pre]

RGSS提示错误:Person应该有两个参数,但是o只提供了一个……也就是说肯定不是我这么胡来的重载构造函数 ……

那么,问题1:怎么重载构造函数?


然后,我去掉了o的部分,删除了重载

[pre lang="ruby" line="1" file="main"]class Person
  attr_reader:name
  attr_reader:age
  def initialize(name,age)
    @name = name
    @age = age
  end
  def age
    @age
  end
  def name
    @name
  end
  def print_name
    msgbox @name
  end
  def speak(string)
    print("#{@name}说:#{string}")
  end
end

p = Person.new("克里喵子",17)
print("name => #{p.name}\nage => 永远#{p.age}岁!\n")
p.speak("Hell-low~万恶的新世界!=_,=|||")

class SuperMan < Person
  #公开区域
  def say_nothing
    print("#{@name}欲言又止。")
  end
  protected
  #保护区域
  private
  #私有区
end


k = SuperKoori.new("克里超人","17")
print("name => #{k.name}\nage => 永远#{k.age}岁!\n")
p.speak("劳资是超人")
p.say_nothing

[/pre]


RGSS返回错误:名称错误。未初始化Object::SuperKoori
呃…………Person的构造函数没有被继承么?……

然后我就在类里面加上了一个构造函数
[pre lang="ruby" line="1" file="main"]
  def initialize(name,age)
    @name = name
    @age = age
  end
[/pre]

问题依旧……


那么……重新规整一下我要提出的三个问题……
1、Steam上购买的XP、VX的资源很少,怎么添加资源丰富游戏场景?
2、如何在RGSS中重构一个类的构造函数?
3、如何在RGSS中继承父类的构造函数?


请各位前辈大侠们不吝赐教!(抱拳)

==================================================================
再加个广告:Steam上的RPGMaker不光便宜,还可以得到集换式卡牌哦(你真是够了)=_,=|||……
梦石
0
星屑
55
在线时间
407 小时
注册时间
2011-4-10
回帖
352
发表于 2016-10-22 11:48:30 | 显示全部楼层
第二和第三个问题,楼主可以看看ruby的入门教程,看完自然就会了。

评分

参与人数 1梦石 +1 收起 理由
唯道集虚 + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
695
在线时间
2 小时
注册时间
2016-10-22
回帖
1
 楼主| 发表于 2016-10-22 12:44:51 | 显示全部楼层
sutao80216 发表于 2016-10-22 11:48
第二和第三个问题,楼主可以看看ruby的入门教程,看完自然就会了。

也就是说,其实RUBY和RGSS是一类的语言么?
以前从来没接触过RUBY,看来为了不百花这30块钱,又要系统的学习一门新语言了啊……=_,=|||
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-10-22 13:54:33 | 显示全部楼层
克里喵子 发表于 2016-10-22 12:44
也就是说,其实RUBY和RGSS是一类的语言么?
以前从来没接触过RUBY,看来为了不百花这30块钱,又要系统的 ...

rgss = ruby game script system
回复

使用道具 举报

梦石
0
星屑
3105
在线时间
741 小时
注册时间
2015-2-28
回帖
784

开拓者

发表于 2016-10-26 19:46:20 | 显示全部楼层
Steam上的折扣确实很给力的,我也一度想入VA的说……
对于后两个问题,看起来楼主以前接触过其它高级语言嘛~那楼主可以跟着本站的教程简单地熟悉一下语法,多看看代码,应该能够比较快的入门了。
对于第一个问题,楼主可以看看授权素材推广计划:http://rmtemp.lofter.com/,里面有很多丰富的授权资源供楼主参考呢。
器识为先,文艺其从。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-10-27 21:07:07 | 显示全部楼层
本帖最后由 taroxd 于 2016-10-27 21:08 编辑

@age

1. Google 或喵呜喵5的授权素材推广计划

2. ruby 不支持重载,但支持可变参数和默认参数,你可以用这个方式来实现。

[pre lang="ruby"]
class Person
  def initialize(name = "某人", age = 30)
    @name = name
    @age = age
  end
end
[/pre]

3. 除了第 38 行,我没看到代码里哪里出现了 SuperKoori…… 所以你的问题和你的代码不匹配
继承父类的方法是不用写额外代码的,包括 initialize。

点评

楼主的问题2:2、如何在RGSS中重构一个类的构造函数?我盯着这个重构想了好半天……  发表于 2016-10-27 22:25

评分

参与人数 1星屑 +310 梦石 +1 收起 理由
唯道集虚 + 310 + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部