本篇教程由作者设定使用 CC BY-NC-SA 协议。
这篇教程主要引入常量、变量、运算符等概念
什么是常量?什么是变量?
例如,打开逻辑编程器,选择整型,输入一个数,再放个变量卡进去,再拿出来,这样你就获得了一个常量,它的值是不会变化的,这就是常量:
而且能直接看到常量的值:
如果我们对两个整型常量进行加法运算:
会得到一个新的东西,叫做变量,它的类型为整型,由于这个变量的值与相加的两个数有关,例如第一个变量卡值为1,第二个变量卡值为2,进行加法运算后返回的值为3,若将第一个变量卡值改为2,那么返回的结果就是4,所以我们称它为“变量”。
变量的值是不能直接看到的:
变量值查看方式在运算符那节会被提到。
常量获取方式:
1)逻辑编程器选择诸如整型、字符串、对应物品这些选项,设置一个值,再放入变量卡然后取出
2)使用固值器
变量获取方式:
1)逻辑编程器中使用运算符(使用方法请往下看)
2)通过各种读取器
常量与变量的类型:
1)基本类型(流体、原料、整型、合成、列表、方块、长整型、布尔、字符串、双精度浮点型、物品、实体、NBT)
2)运算符:运算符其实对应的是现实世界编程中的“函数”
详细的含义可以查看mod自带的手册:论集成动力
或者其网页版
https://integrateddynamics.rubensworks.net/book/_lang/zh_cn/manual/logic/value_types/
基本类型(复制于官方手册)
类型 | 描述 |
Boolean(布尔) | 最简单的数据类型, 其数据可以是True(真)或者False(假). |
Integer(整型) | 用于表示正整数和负整数的数据类型。例如 -20, 0, 1000, 333, ... 它的取值范围在 –2147483648~2147483647之间。 该数据类型是Number(数字)类型的一部分。 |
Double(双精度浮点型) | 实数,也可以是正数或负数。例如 3.1415, 4815162342, 3.33333333, ... 该数据类型是Number(数字)类型的一部分。 |
Long(长整型) | 和Integers(整型)类似,但它拥有更大的取值范围: -9 223 372 036 854 775 808~9 223 372 036 854 775 807之间 该数据类型是Number(数字)类型的一部分。 |
String(字符串) | 一系列的字符,例如 "aaa", "Hi!", "x!(àà)ç", ... |
List(列表) | 包含某个数据类型的数据的列表。 某个特定的所有元素只能包含相同数据类型的数据。例如 (0, 1, 2, 3), ("a", "b", "c"), (3,33, 1,14, 5, 6) |
NBT | 在Minecraft中,某些东西会使用NBT这种数据结构。NBT是一种特殊类型的对象,它可以容纳不同类型的多个值。例如,箱子中存储的所有道具,镐子的附魔信息等等这些都是NBT的实际体现。 变量可以保存这些NBT标签的引用,并且还有一些相应的运算符来读取或扩展这些标签。 NBT标签通常在该Mod中作为低级别的备用机制,以防止您无法通过专用运算符来读取某些信息。(都拿到NBT了还有拿不到的数据吗?) |
Block(方块) | 对Minecraft方块的引用,例如 泥土, 圆石, 红色染色黏土, 箱子, .... |
Item(对应物品) | 对Minecraft物品的引用,例如 苹果, 红石, 钻石镐, 附魔剑, .... |
Entity(实体) | 对Minecraft实体的引用,例如 僵尸, 牛, 玩家abc .... |
Fluid(流体) | 对Minecraft流体的引用,例如 岩浆@1000mB, 水@3mB, 门瑞欧树脂@3030mB, .... |
Ingredients | 物品,流体和能量值(整数)的集合。它的主要用途是代表配方的输入和输出(类似于AE的样板,但是输入和输出的分开的,也就是一个配方要用两张变量卡分别表示输入输出)。 |
Recipe | 一种抽象的合成配方,将“成分”作为输入并输出另一个“成分”值。可以使用逻辑编程器可视地创建食谱,也可以使用机器读取器从(受支持的)机器中读取配方。这些配方可用于集成合成学(Integrated Crafting)。 |
什么是运算符?
运算符对应于现实世界中编程的“函数”,如果有编程基础的话应该对函数的概念很熟悉(不懂也可以百度一下),它具有一个或多个输入值,以及一个输出值,运算符会执行一些特定的命令,用于实现数学计算的加减乘除、逻辑运算的与或非等功能。
集成动力内置了大量的运算符,这些运算符是实现逻辑编程最基本的东西,限于篇幅这里就不介绍每个运算符的作用了,在逻辑编程器中能看到每个运算符的作用(或者官方手册网页版https://integrateddynamics.rubensworks.net/book/_lang/zh_cn/manual/logic_programming.html)。
运算符还有一个重要的特性——柯里化,这个能用来实现自定义的运算符,这个会在下一篇教程讲解。
在开始编程前建议多看看有哪些内置的运算符,弄明白能实现什么功能,这对编程会有很大的帮助。
运算符的使用:
在逻辑编程台中使用运算符是获取变量的方式之一,例如上面提到的加法运算,其实就是利用了“加”运算符:
鼠标移动到“加”运算符标签,可以看到需要多少个输入值,输入值的类型,以及输出值的类型。
右侧位置也能看到需要什么类型的输入值输出值:
使用“加”运算符的过程:
放入两张已赋值的变量卡,右下角再放入空变量卡再拿出来,这样就完成了加法运算,但是这个变量卡并不能像常量那样直接看到值,因为它的值只有在集成动力网络中才会被计算出来。
想要看到变量的值,就需要使用显示器,将变量放入显示器中,就能显示出这个“加”运算的结果:
这里能显示变量值的前提是网络中得有“加”运算符引用的两个输入变量,这时就需要将这两个变量卡放进变量卡箱中,否则显示器会显示个红色的叉,右键显示器,鼠标移到红色叉,会提示无法找到变量:
将变量卡放入各种输入口输出口也可以看到变量值,同样的如果缺少部分输入变量,也会出一个红叉: