Skip to content

练习解答: 0. 报数!统计感兴趣的事件 #2

@RGSS3

Description

@RGSS3

1. 逐渐灭火

这里介绍本文衍生的模式
火炬的四个事件页从左到右的条件分别是:

  • 开关:[开始报数] 自动执行
  • 独立开关A 决定键
  • 开关:[清除报数] 独立开关A 自动执行
  • 开关:[游戏中] 决定键

其中[开始报数]把统计+1,独立开关A打开
[清除报数+独立开关A]把独立开关A关上
而[游戏中]响应确定键这个事件

所以另有一个单独的初始化事件把这个游戏中打开
并且统计流程我们会把游戏暂停,也就是把[游戏中]暂时关闭,统计完之后打开,详情请看文件。

一种可能的实现:
下载

2. 水火无情

报数基本和上一个相同,不过有一个新的技巧
可以把统计功能合并起来,用一个变量来区分现在统计的是啥

image

image

另外,等待一个开关关闭可以用于等待一个功能完成,这时使用并行事件↑下面的章节马上会提到这个功能。

一种可能的实现:
下载

3. 推箱子

这个就是经典的推箱子,传统也有说用地形标志来判断是否目标点的,具体来说是以下这些特有的方法:

  • RM2K3: 直接可以取得某地点(X, Y)的事件ID,或者地形标记
  • RMXP: 取得目标点的地形标记
  • RMVA: 取得目标点的区域

这都可以直接作为是否是一个目标点的依据。
地形标记也是一个特殊的数字,附加在图块上,相同的图块有相同的地形标记(多层以最上层为准)。
可以用它来做什么也是开发者来决定的,本身不像通行度之类的那样有预设的含义。

当然我们这里还是用报数做的,相当于曼哈顿距离=0的情况
每推动一个箱子,只需要考虑这个箱子是

  • 推到了一个目标点上, 匹配数+1
  • 从一个目标点上推开了,匹配数-1
  • 不是以上两种情况,匹配数+0
    请求统计只可能有这三种结果
    我们在实际推动前和实际推动后各匹配一下。
    先减去推动前的统计数,然后加上推动后的统计数,就知道还剩下多少了。

1221

1222

如果说这一节的报数等价于一重循环,那么难度二星的那个情况相当于如何用RM写出并行二重循环报告,留在下面的章节会提到。
当然,实际上这里已经提到了一种可能的二重实现,也就是等待,每个遍历都用一个开关去等待完成就行了。

以下是一种实现:
下载

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions