UltraZ
本帖最后由 UltraZ 于 2019-3-17 12:39 编辑


弱模RAM镇楼
  一.


矢量炮中,改变TNT运动速度最常见的方法,便是改变某方向上推进TNT的数量(除此之外,也可以改变弹头与推进药的距离)


该怎样改变推进药的数量呢?显然,改变TNT的数量就意味着需要改变激活的发射器的数量。而控制发射器激活数量通常有两种方式:


累加原理与模红


前者可以转化成一个数学问题:给定几个数x1、x2、x3、x4......xn,使得可以用这几个数通过相加,组成0~m的数,这几个数组成的数列便是累加数列。而在游戏中最常用的累加数列莫过于二进制中的位权数列——1、2、4、8、16.......2^(k-1)其中,k为对应二进制数的位数。比如,二进制数0110可以通过位权转化为十进制数6。在游戏应用中,红石线有信号,视作1;无信号,视作0。我们可以给定几条红石线,每条红石线控制对应位权数目的发射器,通过激活对应线路,来控制不同数目的发射器。


模红在游戏中依据其信号强度分两类:弱模与强模(还有一种特殊的、只能靠命令方块输入,仅能在一个比较器中传输的“渣模”)。弱模指可以在红石线中传输的0~15格强度的模红信号(同时,15格强度也是红石线的强度极限)强模指强度超过15格(同样存在信号极限,但是对于红石炮来讲这个极限跟无限没什么差别)仅能在比较器中传输的模红信号。(在java版中,一旦强模信号接入红石线,立刻衰减回15格信号)


显然,我们输出6格的模红信号(直接接入炮体中)那么就可以激活6个发射器;输出3格,便激活3个发射器......也正因如此,弱模信号常用于高速激活发射器以提高扫射矢量炮射速。而强模因为无法在红石线中传输,通常用于处理数据、统一火控间IO接口等。


实现模红扫射有很多种方式,最常见的是通过累减,然后覆写RAM内数据,再给予一次脉冲信号读取到炮体上的方式;也可以通过模红计算器,将多次输入的数据进行运算,得到最终输出;如果嫌麻烦,也可以通过高密度矩阵,让人在一定范围内走动,产生不同的信号,从而实现走到哪打到哪.......


  二.

让我们来到实际游戏中,看看第一部分提到的两种火控方式具体是怎么放在炮体上面的(炮体结构请见“【RCT】红石炮的常用炮体结构”一贴)


模红:

其中,绿色羊毛处为输入端,炮体总共可容纳15个发射器(本图为截面,并未完整地将实际炮体造完)
累加原理:

其中,绿色羊毛处为累加端,橙色羊毛处为输入端,炮体总共可容纳15个发射器


部分坛友可能没看懂,因为这两张图内展示的是经过高度压缩后的方案,我们不妨把它们拆分出来,显得更直观





这两种火控的原理在第一部分已经提及,相信这两张直观的图可以更便于各位理解。剩下的便是各位实际的压缩与布线了,在此提供少量特殊方案



















ps01017
顶顶,dalao加油

buhuichongfu
本帖最后由 buhuichongfu 于 2019-3-17 10:54 编辑

难度太高,注定从孤独到放弃……
<del>话说本来要加20金粒的,咋成理由了。</del>

UltraZ
buhuichongfu 发表于 2019-3-17 10:48
难度太高,注定从孤独到放弃……
话说本来要加20金粒的,咋成理由了。

就当作兴趣嘛,谢谢支持了!