Project1

标题: 关于Game_System的问题 [打印本页]

作者: 化螺耕    时间: 2014-2-12 20:43
标题: 关于Game_System的问题
本帖最后由 化螺耕 于 2014-2-13 16:58 编辑

在看的时候有几个地方看不大懂,特来求教各位大大
1.
RUBY 代码复制
  1. @map_interpreter = Interpreter.new(0, true)
  2.     @battle_interpreter = Interpreter.new(0, false)
  3.     @timer = 0
请问这里的0都是什么意思呐??
2.
RUBY 代码复制
  1. def update
  2.     # 计时器减 1
  3.     if @timer_working and @timer > 0
  4.       @timer -= 1
  5.     end
  6.   end
这里在判断计时器是否工作的时候不应该是if @timer_working = true and @timer > 0吗,而且为什么计时器减一就能起到刷新画面的作用呢??
作者: 冰水金刚    时间: 2014-2-12 22:05
Interpreter.new(0, true)
这里的0是一个参数,下面是interpreter类的初始化,可以看到Interpreter.new需要两个参数,0在interpreter类中参与运算
  def initialize(depth = 0, main = false)
    @depth = depth
    @Main = main
    # 深度超过 100 级
    if depth > 100
      print("调用公用事件超过了限制。")
      exit
    end
    # 清除注释器的内部状态
    clear
  end
作者: 冰水金刚    时间: 2014-2-12 22:11
scene_map第57行调用Game_System的update方法
这个调用在scene_map的主循环里,也就是说他会不断地被调用,从而实现画面刷新时计时器减一,并不是计时器减一实现了画面的刷新
作者: 化螺耕    时间: 2014-2-12 23:12
冰水金刚 发表于 2014-2-12 22:11
scene_map第57行调用Game_System的update方法
这个调用在scene_map的主循环里,也就是说他会不断地被调用, ...

哦哦,我明白了许多,不过仍旧有些地方不太明白。。。。就是@timer = 0是什么意思,为什么在画面进行刷新时就要将计时器减一呢?呃……还有在我贴的第二段代码里,不是if @timer_working = true呢?而是直接省略了= true…………不好意思,我的疑问多了点
作者: SuperMario    时间: 2014-2-13 00:53
= 可是赋值。
作者: ZAndiH    时间: 2014-2-13 01:18
本帖最后由 ZAndiH 于 2014-2-13 16:05 编辑
化螺耕 发表于 2014-2-12 15:12
哦哦,我明白了许多,不过仍旧有些地方不太明白。。。。就是@timer = 0是什么意思,为什么在画面进行刷新 ...


<del>判断语句中,零为假,非零一律为真。所以可以直接检测@timer是否为零达到判断的效果。</del>

多谢@无脑之人 指正,【Ruby里面只有nil和false是假,其余为真,包括0
作者: kuerlulu    时间: 2014-2-13 09:54
本帖最后由 kuerlulu 于 2014-2-13 21:24 编辑

只要if后面的对象返回的不是nil或false就行= =
a = ""
if a then p "a is true" end # 这里的a返回了""根据规则它也是true的
至于计时器减一并不能刷新画面,真正刷新画面的是Graphics.update,计时器减一是记录下每一次Graphics.update,然后取差值就能计算总时间了。
至于(0, true)属于参数传递,沙发已解释清楚
作者: myownroc    时间: 2014-2-13 14:12
1.沙发说的很明白了...
2.判断是if a == true(我也经常出错= =)可以写成if a.即if a == true 与 if a 是等价的....
作者: 化螺耕    时间: 2014-2-13 16:57
谢谢楼上几位,我都明白啦{:2_275:}




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