设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2420|回复: 8
打印 上一主题 下一主题

[已经解决] 关于Game_System的问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12800
在线时间
1456 小时
注册时间
2012-7-24
帖子
1302
跳转到指定楼层
1
发表于 2014-2-12 20:43:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 化螺耕 于 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吗,而且为什么计时器减一就能起到刷新画面的作用呢??

欢迎大家加我

Lv1.梦旅人

梦石
0
星屑
180
在线时间
810 小时
注册时间
2013-8-23
帖子
804

开拓者

2
发表于 2014-2-12 22:05:07 | 只看该作者
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

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 认可答案

查看全部评分

遗失的签名。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
810 小时
注册时间
2013-8-23
帖子
804

开拓者

3
发表于 2014-2-12 22:11:02 | 只看该作者
scene_map第57行调用Game_System的update方法
这个调用在scene_map的主循环里,也就是说他会不断地被调用,从而实现画面刷新时计时器减一,并不是计时器减一实现了画面的刷新
遗失的签名。。。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12800
在线时间
1456 小时
注册时间
2012-7-24
帖子
1302
4
 楼主| 发表于 2014-2-12 23:12:28 | 只看该作者
冰水金刚 发表于 2014-2-12 22:11
scene_map第57行调用Game_System的update方法
这个调用在scene_map的主循环里,也就是说他会不断地被调用, ...

哦哦,我明白了许多,不过仍旧有些地方不太明白。。。。就是@timer = 0是什么意思,为什么在画面进行刷新时就要将计时器减一呢?呃……还有在我贴的第二段代码里,不是if @timer_working = true呢?而是直接省略了= true…………不好意思,我的疑问多了点

点评

@timer_working是一个变量,它本身可能具有两个值,true或false @time是将0赋值给@time实变量,此时@time的值就为0了  发表于 2014-2-13 10:20

欢迎大家加我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
5
发表于 2014-2-13 00:53:27 手机端发表。 | 只看该作者
= 可是赋值。

点评

就是把true或false赋值给@timer实变量吧。。。。  发表于 2014-2-13 16:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
79
在线时间
394 小时
注册时间
2011-4-24
帖子
291
6
发表于 2014-2-13 01:18:33 | 只看该作者
本帖最后由 ZAndiH 于 2014-2-13 16:05 编辑
化螺耕 发表于 2014-2-12 15:12
哦哦,我明白了许多,不过仍旧有些地方不太明白。。。。就是@timer = 0是什么意思,为什么在画面进行刷新 ...


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

多谢@无脑之人 指正,【Ruby里面只有nil和false是假,其余为真,包括0

点评

学C的吧,Ruby里面只有nil和false是假,其余为真,包括0  发表于 2014-2-13 17:19

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 认可答案

查看全部评分

《RM——梦想与现实之间》【论坛活动】《RM到底能做什么》
↑想知道如何快速获得60VIP?请点↑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

7
发表于 2014-2-13 09:54:35 | 只看该作者
本帖最后由 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)属于参数传递,沙发已解释清楚

点评

if后面的表达式可以返回任何值,if判断的是真假而不是true/false  发表于 2014-2-13 17:18

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 认可答案

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

8
发表于 2014-2-13 14:12:53 | 只看该作者
1.沙发说的很明白了...
2.判断是if a == true(我也经常出错= =)可以写成if a.即if a == true 与 if a 是等价的....

点评

↓好吧,我受VB影响比较深= =  发表于 2014-2-14 13:12
不等价,前者必须是true才能执行,后者不是nil或false就能执行,这个问题很严重,在ruby里面并不是严格返回true和false的,经常返回实例和nil  发表于 2014-2-13 17:18
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12800
在线时间
1456 小时
注册时间
2012-7-24
帖子
1302
9
 楼主| 发表于 2014-2-13 16:57:44 | 只看该作者
谢谢楼上几位,我都明白啦{:2_275:}

欢迎大家加我
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 03:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表