异星工厂吧 关注:62,247贴子:398,609

回复:【教程攻略】电路实例教学(基础篇)

只看楼主收藏回复



IP属地:浙江来自iPhone客户端49楼2017-04-03 16:57
回复
    我自己鼓捣半天搞了个测两个脉冲信号t差的,想用来测测游戏里的数据,整好后想不明白这个比实际数据有多少t差,望指点


    IP属地:江西50楼2017-04-03 17:05
    收起回复
      2025-07-13 18:45:31
      广告

      @xzk235 如果你想测试传送带的时间,这也是一个思路。
      红图是用来测试的物品,传送带发出持续信号。X信号是用来重置的信号。
      十个传送带的时间是107t……有点不开心


      IP属地:上海51楼2017-04-03 17:54
      收起回复
        吱吱吱吱(看过)


        IP属地:四川来自Android客户端52楼2017-04-04 09:06
        回复
          在“流光”中,关键的需求就是灯逐一的亮起和熄灭,通过设置灯的“启用条件”,可以让灯在接收到特定的信号时亮灭,再考虑的到计数器信号值逐次增加的特点,一个更加方便的实现方法就呼之欲出了。
          首先,将一个周期脉冲连上计数器:
          传送带发出周期脉冲,让计数器逐增加。
          接着更改一下计数器的重置条件,重置是根据“判断参数”决定的,我们将它改为(红图<10)

          这样一来,当计数器的值大于9,就不符合(红图<10),循环中断,计数器自动就重置了。
          临时先用着 10 这个值,以后根据情况再改就行了。
          给这种计数器起个名字,叫 自重置计数器。以后再用到就不用费心说明了。
          摆一圈灯,用信号线连一块:

          然后,灯的启用条件逐一设置为(红图=0),(红图=1),(红图=2),(红图=3)……
          图中有18个灯,因此最后那个灯设置的应该是(红图=17)
          最后将灯的信号线连一下计数器的输入端。
          到这里思路已经很明显了,计数器从(红图,0)计数到(红图,9),
          每个值对应一个灯的亮起,这样就形成了灯逐一亮起熄灭的效果。由于有18个灯,还需要把计数器的(红图<10)改为(红图<18)。
          等等……再减一下传送带的长度,最终就是这样的:

          来看一下效果图:

          说明下,这只录了部分,为保证大小不超,还进行了1/2抽帧,
          通俗的说,GIF图是二倍速


          IP属地:上海53楼2017-04-04 22:36
          收起回复
            你好,请问一周目玩通关大约要用多少小时?谢谢


            来自Android客户端54楼2017-04-05 13:36
            收起回复
              GIF中,即时是在二倍速下,灯的转动速度仍然不快,
              而最初造出来的“流光”,结合tick的知识,可以知道速度是1t/1灯,达到了最快速度。
              对于现在的“流光”,我们还要想办法提高一下速度。
              速度是通过周期脉冲的频率进行控制的,接下来就详细说一下周期脉冲信号生成。
              首先是用箱子和机械臂构成循环来发出周期脉冲——机械臂周期脉冲:

              显然这种方法有很多弊端,速度也不快,因此只能算下策。
              接下来是用传送带构成循环来发出周期脉冲——传送带周期脉冲:

              这种方法好很多。
              其中周期频率最快的莫过于4格极速传送带构成循环,物品放内圈。(上图右边所示)
              还能进行一些修改,再一步提高频率,如 :

              如果还不满意,在传送带上多放几个物品,也可以提高频率。
              这速度似乎已经足够了
              但这并不是我们最终要使用的,较高的频率需要在传送带多放几个物品,这样的周期脉冲并不稳定,间隔时间不一,而且并不能达到极限频率,还不够优秀,因此此方法只能算中策。


              IP属地:上海55楼2017-04-05 15:39
              回复
                在编码领域,有一个东西叫做非门,
                它的作用可以这样理解:
                输入0,输出1;
                输入1,输出0。
                也就是说,它的输入与输出是相反的,
                之所以提到它,是因为非门有一个应用方法叫非门脉冲。
                先在游戏中把这个非门实现出来,
                输入输出……相反?
                ……省略简单的思考过程……
                判断运算器恰好能胜任这个工作:

                很完美的实现了非门。
                而非门脉冲也很简单,就是输入端与输出端相连:

                先推演一下非门输入端与输出端相连会发生什么,这需要一点想象能力和理解能力
                判断运算器初始是没有信号输入的,
                第1t:
                (0)输入,输出(红图,1)并回到输入端
                第2t
                (红图,1)输入,输出(0)并回到输入端
                第3t:
                (0)输入,输出(红图,1)并回到输入端
                第4t
                (红图,1)输入,输出(0)并回到输入端
                ……
                ……
                ……
                这时,如果对其输出端的信号进行接收,获取到的信号是:
                (0)—(红图,1)—(0)—(红图,1)—(0)…………
                这显然就是周期脉冲信号了,而且是游戏中频率最快的周期脉冲
                两个信号的间隔最低为1t,再快间隔就是0t了,就成了持续信号。
                我们给它接上一个电灯,再设置下电灯的启用条件(红图=1),
                可以看到电灯迷之闪烁,不注意就跟电灯是灰色的似的,

                (由于GIF帧率限制,上图基本上是0.5倍速。)
                由之前的1秒=60tick,可以知道这是因为电灯1秒闪烁了30次。
                这个方法是为上策。
                而且如果用不到这么快频率的周期脉冲,还可以精确调整频率。


                IP属地:上海56楼2017-04-05 17:26
                收起回复
                  2025-07-13 18:39:31
                  广告
                  有上策的最快的周期脉冲生成方法,那“流光”的转动速度差不多就足够了。
                  但,我们并不用这个方法……( ⊙ _ ⊙ )
                  非门脉冲每2t发出一个信号,也就是说“流光”的速度是2t/1灯,
                  而我们最初造的可是1t/1灯的速度呢,还差着呢
                  但非门脉冲已经是最快的周期脉冲了,再快就是持续信号了……◔ ‸◔?
                  对……我们不用周期脉冲,就用持续信号……(○´・д・)ノ

                  最终成品图:

                  果然是没什么卵用O__O "…
                  周期脉冲频率的调整,以后用到再提吧,
                  这一部分就算结束了。


                  IP属地:上海57楼2017-04-05 17:28
                  收起回复

                    @御道风云 按数字顺序设置的话,我想不明白什么原理,计数器那个不断叠加然后重置这个懂
                    这个非门不是0 1 0 1 0 1地循环吗怎么灯设置要按顺序呢


                    58楼2017-04-05 21:03
                    收起回复
                      @御道风云


                      59楼2017-04-05 21:05
                      回复
                        首先说一下为什么信号按顺序设置,

                        看计数器的输出信号,输出从(红图,0)到(红图,17)循环
                        灯连的是计数器的输出端,因此让每个灯分别对应一个信号值,设置为从0对应到17
                        非门脉冲可以让计数器从(红图,0)到(红图,17)循环的速度变快。并不会改变信号
                        @鄧浩太
                        你的问题:
                        首先,非门脉冲不需要常量箱,
                        非门脉冲和传送带脉冲是一类东西,作用都是给计数器发出脉冲信号
                        非门提速应该是非门脉冲连到计数器,计数器再连灯


                        IP属地:上海61楼2017-04-05 21:31
                        收起回复
                          第三部分 实例-备用火电电路优化
                          这是对上一篇:
                          【教程攻略】电路实例教学(入门篇)(科学链接:p/4983562621
                          第四部分 火电供电优化 的改进
                          回顾:
                          用处:
                          蒸汽发电与太阳能共用时,很多时候太阳能发电明明够了,蒸汽发电仍然工作.浪费燃料,产生污染.通过电路对电网进行处理,在蓄电池没电时控制电闸使蒸汽发电站工作.使蒸汽发电作为应急电使用.
                          需求:
                          在蓄电池电量小于5%时, 接通电闸使蒸汽发电站工作.
                          关于改进
                          小于5%时工作,那对应的大于5%就不工作了。
                          接通电闸使蒸汽发电站工作后,如果蒸汽发电机站功率比较大,高于耗电量,那就会造成这样的局面:
                          小于5%,工作,
                          1秒后,大于5%,不工作
                          1秒后,小于5%,工作
                          ……
                          电闸不断的开开关关,迷之鬼畜。
                          我们把需求调整为:
                          在蓄电池电量小于5%时, 接通电闸使蒸汽发电站工作,之后若蓄电池电量大于30%,则停止工作。
                          让电路效果更好些。


                          IP属地:上海本楼含有高级字体62楼2017-04-07 14:08
                          收起回复
                            先建出来个大概

                            会发现很多问题, 明显的一个是:
                            大于30%时停止工作对应的就是小于30%开始工作,这与小于5%开始工作是冲突的
                            你可能会想到修改一下条件,比如将电闸的(Z=1)改为(Z=2)等等,但事实这并不理想。
                            问题的解决需要从需求着手,
                            分析一下需求,似乎只是在原来的基础上加了一句:之后若蓄电池电量大于30%,则停止工作。
                            让蓄电池电量在30%时停止工作很简单,但关键的是“之后”这个词,
                            也就是说在小于5%工作的前提下,才会进行大于30%停止工作。
                            更详细的说明应该是:
                            当蒸汽发电机未工作,小于5%时开始工作,大于5%时并不工作
                            当蒸汽发电机已工作,小于30%时仍然工作。大于30%时停止工作
                            也就是根据蒸汽发电机当前的状态,来决定按5%判断还是按30%判断。
                            解决问题的关键就是对蒸汽发电机当前的状态进行记录,
                            记录?这就是存储器大显身手的时候了,我们接上一个存储器。

                            (X是重置信号,暂时没啥用)
                            测试一下,发现这剧本好像不对……

                            存储器的信号疯狂往上涨,这储存的毛线啊( `д′)
                            检查一下信号,发现问题是蓄电池发出的是持续信号,存储器接收的也是持续信号,存储器进行记录需要脉冲信号。
                            电路总比你想象的麻烦一些……w(゚Д゚)w
                            需求已经明确了,我们还可以找其他的实现办法……
                            不过这里就不去找了,知道一些“套路”可以用简单的思路实现需求。


                            IP属地:上海本楼含有高级字体63楼2017-04-07 14:15
                            收起回复
                              2025-07-13 18:33:31
                              广告
                              重点知识:持续信号转脉冲信号。
                              没找到很好的例子,就不复现发现方法的过程了。
                              先看电路图:

                              是不是看起来很简单,就用了一个运算器,其实实际也很简单
                              注意一下箭头的颜色,使用的信号线要不一样。
                              用箱子发出持续信号,灯接收脉冲信号,实际建一下

                              效果图:

                              可以看到,把红图放箱子里,灯只闪了一下,说明灯只接受了一个脉冲信号。
                              来推演一下过程,说明一下其中的原理
                              第1t
                              箱子输出(红图,1)送达运算器和灯
                              第2t
                              箱子输出(红图,1)送达运算器和灯
                              灯亮
                              运算器根据(红图,1)输出(红图,-1)到达灯
                              第3t
                              箱子输出(红图,1)送达运算器和灯
                              灯接收(红图,1),(红图,-1)两个信号,不亮
                              运算器根据(红图,1)输出(红图,-1)到达灯
                              第4t
                              同第3t
                              …………
                              【持续信号转脉冲信号:通过时间差进行信号抵消】
                              原信号先到达灯让灯亮,1t后负值信号到达灯,
                              两个信号抵消就没有了,灯不亮。
                              因此灯只会接收最开始的那个信号,
                              进而实现了持续信号转脉冲信号。


                              IP属地:上海64楼2017-04-07 14:20
                              收起回复