第九十二章 简单的红石脉冲
(此章节原为『红石比较器』,于2022年7月27日改为『简单的红石脉冲』)
(此章节有用到本章说来插入图片,因此最好在起点中文网上阅读本章)
在Java1.9版本中,Mojang才为命令方块加入了『连锁』和『重复』这两个模式。因此在Java1.9版本之前,命令方块只有『脉冲』这一种模式,也就是说命令方块在当时得依靠红石电路才能实现重复和连锁执行。虽然现在已经有了『重复』和『连锁』,但我们仍然应该要了解一下这个在Java1.9版本前被广泛用于命令方块执行的东西:
红石脉冲(Redstone Pulse),俗称红石循环。
首先,让我们了解一下:什么是脉冲?
脉冲(Pulse),又称脈波、脈冲波(Pulse Wave),指的是『一信号幅度的快速暂态变化,由基准值变为较高或较低的值,之后又快速的回到基准值』,用人话来说,就是一个东西,由一个形态快速变化成为了另一种形态,然后又快速回到了原本的形态。脉冲是有规律的,比如每1秒改变一个来回,或每0.05秒改变一次。在Minecraft中,红石脉冲,也就是我们俗称的红石循环,就是指在短时间内,一段红石电路的信号快速地从无到有,再从有到无的过程。
红石脉冲有很多种类型,但最常见的无非也就这四种脉冲形式:
①普通脉冲(红石中继器脉冲)(插图92-1)
②单刻比较器减法脉冲(插图92-2)
③延迟减法脉冲(插图92-3)
④红石火把脉冲(插图92-4)
这四个脉冲各有各的优势,具体可以看下表:
脉冲名|速度|资源消耗|稳定度|简单程度
普通|+|++|+|+
单刻比较器减法|+|+|-|+
延迟减法|-|+|++|-
红石火把|+|+|--|++
如果你要速度快,就采用『红石火把脉冲』或『单刻比较器减法脉冲』,如果你要稳定度好,就采用『延迟减法脉冲』,如果你要卡服,就采用......额,估计你不想你的服务器变得很卡吧?
说了这么多,那么这四个脉冲的速度究竟如何?
我们可以通过命令方块将三者在一定时间内的执行次数转化为分数,来与实际经过的游戏刻数进行对比。我们可以创建一个叫做timer的计分项,把分数放在上面之后将timer显示出来,接着让计算脉冲次数的和游戏刻消耗刻数的命令方法同时被激活,就像插图92-5一样。
然后我们就可以得到普通脉冲的执行数据:
游戏刻(gametick)——803
次数(times)——202
执行一次消耗游戏刻数(gametick/times)——3.975≈4
每秒执行次数(s/gametick·times)——5.031≈5
我们同样可以使用此方法,来测出另外两个的速度:
--单刻比较器减法脉冲(插图92-6)
游戏刻(gametick)——809
次数(times)——203
执行一次消耗游戏刻数(gametick/times)——3.985≈4
每秒执行次数(s/gametick·times)——5.018≈5
--延迟减法脉冲(插图92-7)
游戏刻(gametick)——800
次数(times)——100
执行一次消耗游戏刻数(gametick/times)——8
每秒执行次数(s/gametick·times)——2.5
--红石火把脉冲(插图92-8)
游戏刻(gametick)——804
次数(times)——202
执行一次消耗游戏刻数(gametick/times)——3.980≈4
每秒执行次数(s/gametick·times)——5.025≈5
可见,这四个脉冲中三个的速度是每秒5次,唯一一个较慢的是每秒2.5次,这与『重复』命令方块每秒执行20次的速度相差甚远。但鉴于红石电路确实比较慢,所以这样的速度还能够理解。
但别忘了,本书是一个指令教程,所以我们用红石脉冲的目的并不是要弄红石电路,而是要让『脉冲』命令方块也能够实现重复执行的效果。而对于重复执行的命令方块来说,一个非常重要的特性就是:要容易控制
『重复』命令方块在『需要红石』的模式下,可以通过setblock或fill指令填充红石块或空气来实现控制的效果——这是一个十分流行且方便的控制方法,特别是在一些地图中,你应该也见过这种方法。而对于红石脉冲来讲,能不能用同样或类似的方法进行控制,就是一个非常重要的评判标准。
在上面的四种脉冲中,『普通脉冲』最不容易被控制(你可以研究一下怎么控制这东西),而剩下的三个都能够很好的被指令控制,其中红石火把的控制方式较为特殊——你需要放置的是红石粉而不是红石块(插图92-9)。
这就是本章的全部内容。