Project1

标题: 三个问题:如何重载?如何继承?如何添置额外的... [打印本页]

作者: 克里喵子    时间: 2016-10-22 11:28
标题: 三个问题:如何重载?如何继承?如何添置额外的...
本帖最后由 克里喵子 于 2016-10-22 11:32 编辑

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

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

RUBY 代码复制下载
  1. class Person
  2.   attr_reader:name
  3.   attr_reader:age
  4.   def initialize
  5.     @name = "某人"
  6.     @age = 30
  7.   end
  8.   def initialize(name,age)
  9.     @name = name
  10.     @age = age
  11.   end
  12.   def age
  13.     @age
  14.   end
  15.   def name
  16.     @name
  17.   end
  18.   def print_name
  19.     msgbox @name
  20.   end
  21.   def speak(string)
  22.     print("#{@name}说:#{string}")
  23.   end
  24. end
  25.  
  26. o = Person.new
  27. print("name => #{o.name}\nage => 此人#{o.age}出头,有点地中海……\n")
  28.  
  29.  
  30. p = Person.new("克里喵子",17)
  31. print("name => #{p.name}\nage => 永远#{p.age}岁!\n")
  32. p.speak("Hell-low~万恶的新世界!=_,=|||")


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

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


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

RUBY 代码复制下载
  1. class Person
  2.   attr_reader:name
  3.   attr_reader:age
  4.   def initialize(name,age)
  5.     @name = name
  6.     @age = age
  7.   end
  8.   def age
  9.     @age
  10.   end
  11.   def name
  12.     @name
  13.   end
  14.   def print_name
  15.     msgbox @name
  16.   end
  17.   def speak(string)
  18.     print("#{@name}说:#{string}")
  19.   end
  20. end
  21.  
  22. p = Person.new("克里喵子",17)
  23. print("name => #{p.name}\nage => 永远#{p.age}岁!\n")
  24. p.speak("Hell-low~万恶的新世界!=_,=|||")
  25.  
  26. class SuperMan < Person
  27.   #公开区域
  28.   def say_nothing
  29.     print("#{@name}欲言又止。")
  30.   end
  31.   protected
  32.   #保护区域
  33.   private
  34.   #私有区
  35. end
  36.  
  37.  
  38. k = SuperKoori.new("克里超人","17")
  39. print("name => #{k.name}\nage => 永远#{k.age}岁!\n")
  40. p.speak("劳资是超人")
  41. p.say_nothing



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

然后我就在类里面加上了一个构造函数
RUBY 代码复制下载
  1. def initialize(name,age)
  2.     @name = name
  3.     @age = age
  4.   end


问题依旧……


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


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

==================================================================
再加个广告:Steam上的RPGMaker不光便宜,还可以得到集换式卡牌哦(你真是够了)=_,=|||……
作者: sutao80216    时间: 2016-10-22 11:48
第二和第三个问题,楼主可以看看ruby的入门教程,看完自然就会了。
作者: 克里喵子    时间: 2016-10-22 12:44
sutao80216 发表于 2016-10-22 11:48
第二和第三个问题,楼主可以看看ruby的入门教程,看完自然就会了。

也就是说,其实RUBY和RGSS是一类的语言么?
以前从来没接触过RUBY,看来为了不百花这30块钱,又要系统的学习一门新语言了啊……=_,=|||
作者: 喵呜喵5    时间: 2016-10-22 13:54
克里喵子 发表于 2016-10-22 12:44
也就是说,其实RUBY和RGSS是一类的语言么?
以前从来没接触过RUBY,看来为了不百花这30块钱,又要系统的 ...

rgss = ruby game script system
作者: 唯道集虚    时间: 2016-10-26 19:46
Steam上的折扣确实很给力的,我也一度想入VA的说……
对于后两个问题,看起来楼主以前接触过其它高级语言嘛~那楼主可以跟着本站的教程简单地熟悉一下语法,多看看代码,应该能够比较快的入门了。
对于第一个问题,楼主可以看看授权素材推广计划:http://rmtemp.lofter.com/,里面有很多丰富的授权资源供楼主参考呢。
作者: taroxd    时间: 2016-10-27 21:07
本帖最后由 taroxd 于 2016-10-27 21:08 编辑

@age

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

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

RUBY 代码复制
  1. class Person
  2.   def initialize(name = "某人", age = 30)
  3.     @name = name
  4.     @age = age
  5.   end
  6. end


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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1