变量和常数
变量和常数本质上是值的"容器". 各有名相与相值相. SKIP_ee69985512974cbcb20dd51ba373fed 5 (英语). 含有用户及其代码可以设定的变量,以及仅由处理器设定且用户不能更改的常数。
要了解变量或常数的可能数据或参数类型,请参见词汇表.
变量
创建和改变变量
变量是其名称所暗示的;这个值可以被改变.
例如,在本代码中: set myVariable 3,则 set 指令将创建一个名为 myVariable,并赋予其价值 3。 。 。 。
后来,这可以改变其价值为: 9数字 : set myVariable 9。 。 。 。
注意我们如何使用同样的指令来创建和改变变量 。 这是因为 如果它正在变化的变量不存在,一个指令会先创建它. 如果你知道Python, 你可能已经意识到 它的工作原理相同。
另一个例子是使用 sensor数字 : sensor playerX playerUnit @x (或Sensor playerX=为视觉编辑器在玩家Unit中的x).
假设玩家的位置是 141, 20,一个名为 playerX 将先创建,然后指定一个值为 141。 。 。 。
然而,我们还有一个变数 在例子称为 playerUnit。 。 。 。 那个变量是 参数。 。 。 。 参数是指令的输入值。 这样的话,我们也许有 playerUnit 从 radar 指导。 如果不提供参数或参数无效,该指令将不会执行.
数据类型和隐含转换
当然,变量中的数值有不同类型,具体针对不同的来源和目的,例如: Unit 单位, number 用于任何数字等。 您可以在词汇表中找到所有这些词汇的列表 。
SKIP_ee69985512974cbcb20dd51ba373fed 5 (英语). 逻辑上还有这个变量 隐性转换。 。 。 。 这意味着,如有必要,它将将变量的值从一种类型转换为另一种类型.
如果一项指示是 number但它需要一个 Object,将转换为 null。 。 。 。 如果一个指令需要 number,但被赋予 Object,如果对象不是 null,否则0。
实例:
53- > 开口nullnull- > 开口 零点,Object它是一个硅临界-> 1个
这个 print 指令是唯一需要 String 作为投入,所以其规则在手册本身的部分中被表述.
变量命名
正确命名变量是一般编程时需要掌握的重要技能. 这有助于使代码更容易被读取和理解. 因此,这可以使人们更容易学习或修补你的代码.
可变名称可以包含任何可键入字符. 然而,它们不能纯粹是数字,因为它将使用实际数字。
在大多数mlog码中通常的取名公约是"骆驼Case",它的例子本身就是. 使用骆驼命名的变量实例 案件为: playerX, (中文(简体) ). coreFound, (中文(简体) ). vertexAngle。 。 。 。
在命名变量时,要确保它们描述性但简短. 它们必须说明它们所拥有的价值或其目的。 同时,它们不应该是完整的句子或者横跨整页,或者太短,以致于变得混乱. 可以使用缩写,缩写,或用更短的名词来使其更加简洁.
每个人都有自己的特有风格和喜好,但尝试从mlog等语言的代码的好例子中学习,同时保持与通俗风格相近.
处理器变量和常数
常数也持有值,但不能被改变. 每个处理器都有这些常数和内置变量:
处理器
@ 这 constant Building
A级 Building 代表处理器本身的对象。 你可以用这个 sensor 查找处理器的各种属性。
@ 这x constant number
处理器的x坐标.
@ 这首歌 constant number
处理器的y坐标.
@ ipt constant number
每个勾选符执行指令的数量( 60 个勾/秒) 。
- 微处理器 - > 开口 2个
- 逻辑处理器 - > 第8条
- 超处理器 - > 25个
@ 计数器 variable number
表示处理器将读取代码的下一行的变量,相当于 %IP 在x86时。 它可以像其他变量一样被改变,作为进行跳跃的另一种方式.
设置( 高级) 实例 @counter 跳转到函数,然后跳回呼叫者:
op add retAddr @counter 1 # Save where we will continue after the function returns by adding 1 to the counter
set @counter myFunc # Jump to the line representing myFunc
...
set @counter retAddr # Return to the line set earlier after the function is called
链接
@ links (帮助) constant number
常数等于与处理器相连的建筑物数量. 当块被链接或未链接时,它被处理器所改变.
你也可以用这个 getlink 以环绕所有连接的建筑物,例如:
set linkIter 0 # Create iterator variable
getlink block linkIter # Get Building Object of the "linkIter"th linked building.
# Do what you want with the building here
jump 1 lessThan linkIter @links # Loop
constant Building
constant Building这真的是多个常数,每个建筑都有一个与处理器相连. 每当建筑物与处理器脱钩或连接在一起时,就将其取出或添加。
buildingName 代表大楼 内部名称,可以在维基文库中找到。
n 开始于 1 , 并随每栋连接的建筑增加。 有点像 n一种类型的建筑。
这可能有点难理解,所以这里有一些例子:
- 连接到处理器的第一个散点 :
scatter1 - 第三个连线:
ripple3 - 第二个激光钻头连结:
drill2 - 第十一届斯波尔出版社链接:
press11
也可以在选择处理器时查看每个链接建筑的"恒定名"上方.

杂项
@ 单位 constant Unit
代表当前绑定单位的常数 。 它只有在处理器拆卸一个单元时,或者绑定另一个单元时才会改变. 使用University 指令访问,例如 ucontrol, (中文(简体) ). ulocate,以及 uradar。 。 。 。 由于它是一个单位对象,您也可以使用它与 sensor。 。 。 。
这是mlog中单位控制的核心部分; 一次只有一个单位可以约束。 不过,你可以在变量中参考,比如 set unitReference @unit。 。 。 。 但是,该变量不能用来控制引用单位。 只能用于与其他单位核对或获取相关信息. 因此,你可以把它看作是"单位身份".
@ 时间 constant number
代表当前 UNIX 时间戳 以毫秒计。 。 。 。
@ tick (帮助) constant float
表示自地图开始以来的勾数(60分/秒).
地图 constant number
地图的宽度,以瓷砖为单位.
@maph( 翻译) : constant number
地图高度,以瓷砖计.