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

Project1

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

[已经过期] Interpreter.new的东西真诡异

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
跳转到指定楼层
1
发表于 2015-10-15 23:41:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
1,
为什么Interpreter.new需要循环?XP的
在地图场景中,方法update中,@map_interpreter.new(0,false)为什么要放在里面循环?
2,
def update
      # 尝试执行事件列表、返回值为 false 的情况下
      if execute_command == false
        return
      end
  end
为什么 execute_command 要赋值为 false ? false 不是不执行了吗?
3,
  def setup_starting_event
    # 循环 (地图事件)
    for event in $game_map.events.values
      # 如果找到了启动中的事件
      if event.starting
        # 如果不是自动执行
        if event.trigger < 3
          # 清除启动中标志
          event.clear_starting
        end
        # 设置事件
        setup(event.list, event.id)
      end
    end
  end
  event.clear_starting不是不启动事件了吗?setup(event.list, event.id)还能继续吗?
4,
我查下了, execute_command这个方法没被调用,为什么地图能用这个方法execute_command里面的指令???

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21681
在线时间
9419 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

2
发表于 2015-10-16 00:45:49 | 只看该作者
没用过xp,不一定对:
1.A.new 和 @a.new 是不同的,请先区分开来
2.为什么要赋值为false,事件不就不执行了吗
因为事件已经全部执行完了,现在希望事件不执行了,所以赋值为false
3.setup方法有哪个语句需要依赖被清楚的启动中标志么?
4.因为是不停循环的interpreter在调用这些方法

点评

我第一个问题描述错了,下面3个问题,等我回去整理思路,再来反馈,真谢谢了!  发表于 2015-10-16 06:33
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
3
发表于 2015-10-16 00:46:37 | 只看该作者
本帖最后由 wbsy8241 于 2015-10-16 00:48 编辑

1. 我没在 地图场景中 发现 @map_interpreter.new(0,false)
   地图场景中会刷新 公共事件(interpreter)
   不循环刷新 怎么执行事件? 怎么执行自动开始的事件?怎么执行并行事件 里面的等待不刷新要怎么执行?
2. if execute_command == false
   这句话的意思是“如果  execute_command 返回的是 false”
   “==” 不是赋值 是判断
   2PS: 如果一个变量之前没有被赋值过 那就执行 这个类中的同名 类, 比如这个会执行 def execute_command 这个类 判断 execute_command 的返回值
3.不让事件立即执行啊 事件还是要载入的 还有接触开启之类的啊
4.参见 第二条  execute_command 已经被调用了


你可以看看帮助文件 基本的赋值 判断 都没搞清楚。

点评

请帮我看看  发表于 2015-10-16 17:49
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
4
 楼主| 发表于 2015-10-16 17:45:57 | 只看该作者
本帖最后由 kvkv97 于 2015-10-16 17:49 编辑

1,第一问题准确描述应该是:$game_system.map_interpreter.update为什么需要循环?
  1. class Scene_Map
  2.   def main
  3.     loop do
  4.       update
  5.     end
  6.   end
  7.   def update
  8.     $game_system.map_interpreter.update   
  9.   end
  10. end
复制代码
2,
“如果一个变量之前没有被赋值过那就执行这个类中的同名变量,比如这个会执行 def execute_command 这个类 判断 execute_command 的返回值”的意思是:条件语句if execute_command == false在做出判断前,会自动执行def execute_command再做判断吗?
3,

  1.   def setup_starting_event
  2.     # 循环 (地图事件)
  3.     for event in $game_map.events.values
  4.       # 如果找到了启动中的事件
  5.       if event.starting
  6.         # 如果不是自动执行
  7.         if event.trigger < 3
  8.           # 清除启动中标志
  9.           event.clear_starting
  10.         end
  11.         # 设置事件
  12.         setup(event.list, event.id)
  13.       end
  14.     end
  15.   end
复制代码
这个的意思是:如果找到了启动中的事件,就设置事件执行事件,然后再作判断if event.trigger < 3执行语句event.clear_starting吗?
4,
  # 什么都没有设置的情况下
  if @list == nil
     return
  end
的意思是:在没启动事件前,@list是空的,不设置返回值;如果没这个设置的话,那么,为什么def execute_command /if @index >= @list.size - 1 的size会出现空类的方法而报错?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
5
 楼主| 发表于 2015-10-17 17:26:06 | 只看该作者
顶起!!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
6
 楼主| 发表于 2015-10-18 17:32:05 | 只看该作者
求解答!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
7
发表于 2015-10-19 11:14:22 | 只看该作者
我只想说……这是VX区……
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21681
在线时间
9419 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

8
发表于 2015-10-19 12:06:40 | 只看该作者
kvkv97 发表于 2015-10-16 17:45
1,第一问题准确描述应该是:$game_system.map_interpreter.update为什么需要循环?2,
“如果一个变量之前 ...

你这四个问题特么和你一楼写的完全不一样好吗?

1.执行事件是在$game_system.map_interpreter.update中做的,不循环,事件执行一步就停了,具体请自己去看对应update部分的代码

2.会,具体来说,方法定义再更早之前就已经完成了

3.是

4.nil没有size方法
@list 为nil 时执行 @list.size 自然报错

点评

另外,请斑竹帮我看下:execute_command == false,这个方法为什么其返回值为 false,我百思不得其解!!!!  发表于 2015-10-19 23:29
总结,@list空值则@list不返回值(自然@list.size不被调动),如果@list有值则@list.size自然被调动;是这样的吗?  发表于 2015-10-19 23:22
(接前面)然后,当事件被启动之后,@list.size被调动,这个时候@list已经被赋另外的值了;  发表于 2015-10-19 23:21
瞄斑竹,关于4,我觉得是这样的:首先,@list在没启动事件前,其值为NIL, 所以做出@list=nil判断,返回不设置值(return),那么方法@list.size不被调动  发表于 2015-10-19 23:17

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21681
在线时间
9419 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

9
发表于 2015-10-20 08:39:29 | 只看该作者
本帖最后由 喵呜喵5 于 2015-10-20 08:43 编辑

回一楼点评:
然后呢?你想说什么?
根据语境来看,在这里return的主要作用是用来结束这个方法,调用这个方法的代码并不会去依赖这个方法的返回值
你这边的总结给我的感觉就是整个都乱七八糟的,特别是这句:“@list空值则@list不返回值(自然@list.size不被调动)”

回四楼点评:
关于 execute_command 的返回值为false,请先看懂这个方法的代码,看不懂的话请告诉我你究竟哪里看不懂了


另外不知道你是通过什么途径学习脚本的,从你的回复中感觉你的整个逻辑都很混乱,个人建议你通过一些书籍(例如这本动物书:http://pan.baidu.com/s/1jGtU790 ,或者大名鼎鼎的镐头书)系统的重新学习一遍Ruby语言

点评

好的,那么下面我肯定的告诉你:请重新回头通过相关书籍系统的学习Ruby编程语言而不是通过F1学习,否则就不要提这些看着就混乱的问题  发表于 2015-10-21 18:07
我是通过F1学习脚本的  发表于 2015-10-21 16:46
谢谢TAROXD的点拨,我语文过关的,只是逻辑有问题而已!  发表于 2015-10-21 16:46
应该建议楼主先学语文  发表于 2015-10-21 14:00
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 11:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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