Project1

标题: 请问 模块 和类 的联系? [打印本页]

作者: 些芒果兮维码藏    时间: 2015-5-18 19:15
标题: 请问 模块 和类 的联系?
最开始 把他们搞混淆了,现在才发现不同。

然后 关键现在不知道 模块和类的联系是什么?

我看到模块里有 全局变量 = 类.new  

但是没看到  游戏 运行运行怎么就 跑类的功能里面去了。

  
  我意思就是 想知道他们的联系

  
   诸如 自己编辑个 class 的脚本  后,在哪里插入个什么句子 就能够调用起来之类的。(新人请耐心教导我)
作者: 些芒果兮维码藏    时间: 2015-5-18 19:18
  自己编个 新的 模块

然后编个类

  main 函数 里面怎么不能像原版那样 RGSS MAIN{ xxxx.功能 } 运行起来? 说没有 声明的啥之类的意思


我自己编了个 class,但是 不知道怎么在 模块里面用起来。

我 想听人讲解, 主要一天学一些

作者: 些芒果兮维码藏    时间: 2015-5-18 19:20
在线 坐等。

  主要看别人脚本太长了,有很多都是暂时不想知道的东西,不如直接 问人

如果没人说 那就 明天自己再慢慢看吧
作者: 些芒果兮维码藏    时间: 2015-5-18 19:24
直接  
在模块里面

  XX = 类.new
xx.类的功能  怎么怎么?

我看到模块里面才 self.功能  这样定义

  他们其实只是和 类里面 样子长得不一样么?

还是要高一级的类就是模块的感觉?
作者: cinderelmini    时间: 2015-5-18 20:36
本帖最后由 cinderelmini 于 2015-5-19 11:21 编辑

模块和类没有啥必然的联系,←此行误人子弟快去死!
BY 喵呜喵5:Class类继承了Module类,类是加强了的模块。

模块一般用来定义一些(全局)会广泛用到的东西,参考Vocab和Cache,
类的功能单纯看它的内容和用在什么地方,Window就是窗口,Sprite类就是精灵(姑且理解为图片?),Scene类就是(可互动性操作的)界面。

一般来说,
  1. @xx = XXX.new
复制代码
这样的基本调用类句式很常见,
至于
  1. @xx.a
  2. @xx.b
  3. @xx.c(n)
复制代码
此类的句子,一般是用来调用前面提到的XXX类里面的各种方法,
见到这种句式的话可以在XXX类里面找到对应的a,b,c方法。

至于全局变量
  1. $xxx = XXX.new
复制代码
这种句式,道理是一样的,单纯是为了可以在游戏全局里使用$xxx这个变量而已。

(能表达的只有这样了,能力有限~

作者: VIPArcher    时间: 2015-5-18 22:10
本帖最后由 VIPArcher 于 2015-5-18 22:14 编辑

能力有限,只能解释成这样了,有错误请指出
Class继承了Module,拥有Module的全部方法,并且还拥new方法,可以生产实例。
Class调用new方法生成实例时会将new方法的全部参数原封不动地传给initialize方法。
Module不能生成实例,并且不能继承,但是Moduleinclude方法可以把自己混入到其他模块或者类,以此实现类似继承的功能
Class不能使用include把自己混入其他类里,可以被Module混入,可以使用继承
模块里的方法通常都会定义成
RUBY 代码复制
  1. Module VIPArcher
  2.   def self.hei
  3.     $m5script = 0
  4.   end
  5. end
这样就可以直接VIPArcher.hei 来调用了。
像i下面这样定义的方法
RUBY 代码复制
  1. Class VIPArcher
  2.   def hei
  3.     $m5script = 0
  4.   end
  5. end
只能被VIPArcher类的实例调用 VIPArcher.new.hei 但是Class 也是可以定义self.hei这样的 类方法 的。
然而我这里写了一堆废话呢。(其实我的重点在 $m5script = 0
作者: Mr.Jin    时间: 2015-5-19 13:18
首先 类 类继承于 模块 类,
类可以实例化生成对象。
另外,ruby的类是单继承的,但可以利用模块实现多重继承。
  1. module m1
  2.         def f1
  3.                 return true
  4.         end
  5.         instance_method :f1
  6. end
  7. module m2
  8.         def f2
  9.                 return false
  10.         end
  11.         instance_method :f2
  12. end
  13. class c1
  14.         include m1
  15.         include m2
  16. end
  17. test = c1.new
  18. p test.f1
  19. p test.f2
复制代码

作者: 些芒果兮维码藏    时间: 2015-5-19 19:21
本帖最后由 些芒果兮维码藏 于 2015-5-19 20:20 编辑
Mr.Jin 发表于 2015-5-19 13:18
首先 类 类继承于 模块 类,
类可以实例化生成对象。
另外,ruby的类是单继承的,但可以利用模块实现多重继承 ...


哦, 大概了解了 , 谢谢 指教 。


   额 刚刚的一大串问题我自己学习了一下F1 和尝试了一下,大概了解了
  目前想知道的 还是有两个问题:

问题1 :

  我用 loop do   
          Graph…… .update
         Input。updat #大概这个意思
    然后判定, 设置, 截取对应的 行走图
   end
  我发现可以成功, 但是图片 是一闪一闪的,不是持续的。 是怎么回事? 是直接用rect.set(  ,,,) 那个 效率导致的还是  需要先像缓存那样放
  还是 用的其他什么函数? 我大概看了一下,根据目前的理解
  好像原版里面也相当于是 直接用的 rect.set(计算后的结果) 这样的,可是没有一闪一闪的。
还是只是背景图片没有设定是黑的 所以看起来是那样的? 还是怎么回事?
求指点


问题2  暂时忘记了
作者: 些芒果兮维码藏    时间: 2015-5-19 19:39
本帖最后由 些芒果兮维码藏 于 2015-5-19 20:35 编辑


  @变量 是用在 class 里面的 内部变量吗?
 
@@变量 只是名字不一样还是怎么?求解释




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