
在《Mechanica》中学习编程基础 简介 本指南将涵盖以下主题: - 函数 - 变量 - 事件 - 常用函数 - 示例程序 函数 简单来说,函数可以被执行并产生结果。一个函数可以有多个输入,也可以没有输入。 下面你可以看到一个装甲门有2个可拖入编程区域的函数。第一个是开门函数,第二个是关门函数。开门函数需要一个参数作为输入,用于指示我们希望门打开的方向。
函数的输入在左侧,输出在右侧。就像读写一样,我们遵循这种从左到右的顺序。 《Mechanica》中的物体具有多种功能。例如,灯光可以开关、调节亮度,还能改变颜色。采矿设备和制造机通常也可以开关。总的来说,如果我们知道何时以及如何触发这些功能运行,就能完成很多有用的操作。 变量 变量用于存储数据。我们可以将它们用作函数的输入,也可以将函数的结果存储到变量中。变量通常表示物体的状态。下面是一个示例,你可以在编程区域看到开关物体的变量。
如你所见,变量都有“类型”。在编程语言中,为变量关联类型是一种常见做法。你不会想把苹果和橙子混为一谈。有时需要将它们从一种类型转换为另一种类型,但这部分内容我们稍后再讲。为了方便用户使用,所有类型都采用颜色编码。这意味着只有当变量的颜色与函数输入的颜色相匹配时,变量才能接入该函数。 以下是《Mechanica》中的变量类型列表: 布尔值 百分比 数字 文本 颜色 布尔值:它表示最小的逻辑变量,即一个位。其值非一即零,通常分别被解读为真或假。类型颜色:红色。 百分比:它表示一个介于0%到100%之间的值。它不是数字,因为数字可以超过100。 类型颜色:灰色 数字它代表一个数值。也可以是负值。不一定是整数。 类型颜色:蓝色 文本它代表一个包含有限字符的字符串。 类型颜色:绿色 颜色它代表颜色。有多种可用颜色可供选择。 白色 红色 橙色 黄色 绿色 青色 蓝色 紫色 粉色 黑色类型颜色:橙色 事件 在【Mechanica】中编程最重要的部分是事件。如果你想自己进行编程,那么充分理解事件机制是非常重要的。 它们是“触发器”。当事件发生时,它们会启动与之关联的函数。 有些对象没有事件,但大多数功能对象都有。计时器可以判断新的一天何时到来、一个小时何时过去等。矿工可以判断采矿尝试是成功还是失败。激光绊线可以判断何时被触发。 我认为最好从编程示例开始。假设你想制作一扇自动关闭的门。为此,你需要一个激光绊线、一个门框和一扇门。按照截图中的方式进行设置。
完成后,使用编程工具将绊线与门连接(看着绊线时左键点击并拖动到门的中间位置,这是连接物体的方法,务必记住)。然后只需看着绊线按“E”键即可。准备就绪! 现在,在事件列表下,你应该能看到【On Laser Tripped】。将其拖到编程区域。在已连接物体列表下,你应该能看到门及其功能。找到【Close Door】功能并按如下方式连接它们。

这样你就能穿过门,并且在你通过后,门会立即在你身后关闭。如果你完成了上述所有步骤,可能已经注意到,在这种配置下你可以进入,但无法出去,因为你会触发激光,门会当着你的面关闭。那么,如果能有足够的延迟让你出去后再关闭身后的门,岂不是很好?这时你就需要了解通用函数的世界了! 通用函数 在《机械城》中,可编程对象共享多个实用函数。你可以通过右键点击编程区域来访问这些函数。在弹出的上下文菜单中,你可以找到所有分类的通用函数。我将尝试介绍当前在【通用功能】=>【执行控制】下列出的部分功能,因为我认为它们是最实用且易于学习的。 分支 如果你希望程序根据布尔变量执行不同操作,分支功能正是你所需要的。下面是一个有趣的小例子:你拿起一个开关,将其放置在任意位置,然后开始对其进行编程。现在,你需要程序在开关状态切换为开启或关闭时运行。首先,将【开关开启或关闭时】拖到编程区域。接着,你需要检查开关的当前状态,因此从变量部分拖动【开关是否开启】。完成后,右键点击编程区域的空白处,选择【通用功能】=>【执行控制】=>【分支】。这将添加一个分支功能。将调用的事件绑定到该分支的“运行”中,并将“开关是否开启”变量作为其条件。现在你只需为每个条件设置颜色。我选择在关闭时为红色,开启时为绿色。

好啦!

等待 这是最实用的常用功能之一。你并不总是希望事件一触发,相关操作就立即执行。通常情况下,你需要在中间设置一段延迟。“等待”功能正是为此设计的。如果你做过自动关闭门的示例,那么现在正是为其添加延迟的最佳时机——在激光被触发和门关闭之间设置一段延迟。

如你所见,现在门会先让你出去,然后再在你身后关闭。对于不同的程序,你可以更改下方的数字,该数字表示此功能延迟后续功能的秒数。 间隔 如果你希望某个事件持续不断地发生,那么你就需要间隔。我不建议将间隔设置得过于极端,比如每0.01秒运行一次。这通常会扰乱逻辑,或者可能是一个漏洞,不管怎样,我建议每次执行之间至少间隔0.5秒。 例如,如果你想让一盏灯每秒闪烁一次,现在你可以使用间隔来触发一个分支,该分支获取灯的【是否开启】变量并将其设置为相反状态。


重复 与间隔类似,但它需要由事件触发,并且只执行指定的次数。如果你编写的程序在某次重复过程中触发了相同的重复函数,它会废弃旧的重复并重新开始。因此,我建议如果你需要循环嵌套,只需使用额外的重复模块。 示例程序 以下是一些非常实用且简单的程序。 自动采矿机 如果资源耗尽,自动采矿机继续尝试就没有意义了。为了节省它们的电池,我们可以编写这个小型程序。

熔炉 如果你将熔炉紧挨着自动采矿机放置,可能会遇到熔炉燃料耗尽而采矿机仍在持续工作,导致矿石堆积一地的糟糕情况。通过这个小程序,你可以设置采矿机在熔炉无法运行时停止采矿。

间隔时间为10秒,因为矿工完成矿石开采大约需要15秒。因此,每10秒我们会检查两件事:熔炉是否有燃料,熔炉是否处于开启状态。如果这些条件都满足,我们无需进行任何操作。但如果其中任何一个条件未满足,我们可以让熔炉关闭其关联的矿工。 焚化炉 你可以像这样在焚化炉上设置激光绊线:

将两个物体连接后,你可以编写这个简单程序,让焚化炉仅在有物体被送入时才开始燃烧。

这里的逻辑并非完美无缺,但它涵盖了大多数情况。
2026-03-20 13:00:20 发布在
Mechanica
说点好听的...
收藏
0
0
