mindustry吧 关注:12,841贴子:77,184

回复:逻辑处理器前瞻性教程

只看楼主收藏回复

先摆一个版本号在这里:BE build 9260
【添加新语句】
下图为所有可用语句,点击添加。
分别是
Write-写(存储器)
Read-读(存储器)
Draw-作图(显示屏)
DrawFlush-作图刷新(显示屏)
Print-打印文字(信息板)
PrintFlush-文字刷新(信息板)
Control-控制(某个方块)
Radar-雷达探测(武器)
Sensor-传感器(某个方块)
Set-新建(变量)
Binary Op-二元运算(变量运算)
Unary Op-一元运算(变量运算)
End-立即结束(///)
Jump-跳转(逻辑关系)

接下来的内容写起来超级繁琐


16楼2020-08-13 19:11
收起回复
    支持


    IP属地:湖南来自iPhone客户端17楼2020-08-13 19:21
    回复
      加油


      IP属地:广东来自Android客户端18楼2020-08-13 19:37
      回复
        既然是程序教学
        那第一步肯定是【hello world】啦
        首先我们放一个处理器和信息板,然后关联()

        然后打开处理器,新建一个print语句,如下图

        修改参数为“Hello World”(双引号表示这是一个字符串)。
        并新建一个PrintFlush语句

        语句位置不对?可以按住标题它拖下来

        再点返回,处理器就设置好了。

        提示:
        语句的运行顺序是自上而下,循环运行。
        处理器内声明的变量可以跨循环使用,但在编辑处理器后会清空


        19楼2020-08-13 20:15
        收起回复
          这nm不会编程游戏还玩不了?


          IP属地:广东20楼2020-08-13 20:19
          收起回复
            我出门散个步回来,aneko酱已经更到9263了
            不过以下内容还是基于be 9260
            下面是指令的简要介绍
            首先介绍打字语句
            【print】
            仅有一个输入参数,就是你要打印的文字内容。
            参数加引号就是字符串;不加就认为是变量名,这样打印的就是变量的值。
            使用print之后,打印的文字会【缓存】在处理器中。因此可以用多个print来组成一段打印内容,再用下面的printflush一起输出。
            比如我要让信息板显示copper:[变量copperincore的值]
            那么就有语句
            print "copper:"
            print copperincore
            printflush message 1
            【printflush】
            一个参数,信息板名称。清空指定信息板、把缓存的文字输出到该信息板、清空缓存的文字。
            print和printflush的关系,可以打个比方:
            你有一叠草稿纸,和一面面信息板,草稿纸是隐藏的而信息板是显示出来的。每一次执行print,就往草稿纸上做一个笔记。写完了执行printflush刷新到信息板1,相当于把这张草稿纸【覆盖】到信息板1上【展示】出来,并且【换一张新草稿纸】继续写


            21楼2020-08-13 23:25
            收起回复


              22楼2020-08-13 23:37
              回复
                【sensor】
                这是一个传感器语句,可以探测目标单位的信息。

                两个参数+一个返回值。
                @copper是要探测的【属性】,block1是被探测的【单位】,通常是关联的方块。
                result是返回值,探测到的【属性值】会赋给变量result
                例:监测大型核心(core:nucleus)里有多少铜,并显示在信息板上
                (输入框太小,变量名显示不全,这都怪anuke



                23楼2020-08-13 23:53
                收起回复
                  续:sensor可以探测16种物品的储量,4种液体的储量,以及其他信息
                  目前其他信息列表如下。
                  totalItems物品总数
                  totalLiquids液体总数(
                  totalPower电力总量
                  itemCapacity物品容量
                  liquidCapaticy液体容量
                  powerCapaticy电力容量
                  powerNetStored电网电量
                  powerNetStored电网电能容量
                  powerNetIn电网输入
                  powerNetOut电网输出
                  health生命值
                  heat热量(钍堆)
                  efficiency效率
                  rotation转向角度
                  x坐标
                  y坐标
                  shootX准星x坐标
                  shootY准星y坐标
                  shooting是否正在开火
                  enabled是否启用


                  24楼2020-08-14 00:17
                  收起回复
                    一觉起来,9274,而且多了新的语句。我感觉这帖开早了


                    25楼2020-08-14 11:09
                    回复
                      更新至be 9274
                      【control】
                      控制目标属性,相当好用的语句。至此半只脚迈入自动化控制

                      它目前可以控制两种属性,enabled 和 shoot,点击enabled输入框会弹出菜单切换。分别来看

                      -enabled
                      是否启用。两个参数。
                      block1是要控制的【单位】,通常是关联的方块。to后的0是要设定的【属性值】,目前只有1和0(即布尔值真&假)

                      -shoot
                      射击目标。四个参数。
                      block1是要控制的【单位】,xy是射击点的实体网格坐标,shoot是否开火(1是0否)。
                      提醒:
                      实体网格坐标:建筑网格坐标=8:1
                      不是相对坐标,而是地图坐标


                      26楼2020-08-14 11:53
                      收起回复
                        做自动化,得有条件语句吧?
                        【jump】

                        若///,则跳转到第///条语句,否则继续运行。
                        有三个参数+一个隐藏的参数。
                        三个参数不讲了,看下图应该能理解意思。中间那个比较运算符通过点击切换。

                        隐藏的参数是跳转到【第几条】语句。在编辑界面,拖动jump右侧的白色箭头牵引到目标语句即可。
                        效果如图:

                        【end】

                        立即结束,指的是立即结束本次处理器循环。配合jump就可以在过程中有条件地执行某些语句
                        应用:

                        这是一个规划中的塑钢中转线。假设要求优先保供弹,预留200塑钢库存,富余时才启动通向核心的传送带。
                        语句如下

                        探测塑钢量,if判定,<200则跳转到第二个control关闭传送带,否则执行第一个control打开传送带(然后执行end开始新循环)
                        顺便这是一种实现if else的方法,其他方法当然有,自行摸索吧



                        27楼2020-08-14 14:45
                        收起回复
                          写一半了,申个精


                          28楼2020-08-14 14:50
                          回复
                            加精加精


                            IP属地:广东来自Android客户端29楼2020-08-14 19:52
                            回复
                              sensor result battery1 @totalPower
                              jump 4 lessThan result 200
                              control shoot lancer1 50 50 1 0
                              end
                              control shoot lancer1 50 50 0 0




                              IP属地:广东来自Android客户端30楼2020-08-15 09:55
                              收起回复