LOLGraphics 3.4 编程/变量和输入
在 LOLGraphics 中,解释器允许您访问 4 个可用于存储数据的段。每个段有 65536 个单元格。在单字节段中,每个单元格是一个带符号的 1 字节整数。在双字节段中,每个单元格是一个带符号的 2 字节整数。在四字节段中,每个单元格是一个带符号的 4 字节整数,在 8 字节段中,每个单元格是一个带符号的 8 字节整数。
每个段中的单元格编号为 0-65535。在程序开始时,每个单元格被设置为一个随机数。您可以使用以下命令打印每个单元格的值:PLZ PRINT ONE/TWO/FOUR/EIGHT BYTE 100
。该命令将打印索引为 100 的单元格的值(第 101 个单元格!),而不是数字 100 (!)。如果您想无论变量的值如何都打印 100,只需键入 PLZ PRINT TEXT 100
。您也可以更改每个单元格的值。运行 PLZ SET ONE BYTE 100 27
将将单字节段中索引为 100 的单元格的值设置为 27。
如果使用许多值,编写单元格地址会使代码难以阅读。这就是您能够为这些单元格添加标签的原因。如果您键入以下行:I HAS A FOUR BYTE DAT IZ CALLED X
,您将四字节段中的第一个未标记单元格标记为“X”。您还可以运行 PLZ SET FOUR BYTE X 27
和 PLZ PRINT FOUR BYTE X
。
以下代码将两次打印相同的数字,但每次打印不同的数字。
HAI 3.4 0 100
IM IN UR CODE EXECUTIN UR KOMANDZ
I HAS A FOUR BYTE DAT IZ CALLED X
PLZ PRINT FOUR BYTE X
PLZ PRINT FOUR BYTE 0
IM OUTTA UR CODE
熟悉编程语言的读者一定会记得几乎所有语言都有关于变量名中可以使用哪些字符的规则(通常只是字母、数字和下划线,第一个字符必须是字母)。深奥的编程语言 TMMLPTEALPAITAFNFAL(结束所有语言项目的百万语言项目,这不是一个很棒的语言名称吗?)有非常奇怪的规则,这些规则每天都在变化,所以有一天它可能要求符号 [ 至少出现 15 天或类似的东西。
LOLGraphics 对变量名没有任何限制。您可以使用数字为变量命名,但这可能不是一个明智的选择,因为它将始终访问具有该索引的单元格,而不是该变量。
您也可以为不同的变量赋予相同的名称。如果它们在不同的段中,那么代码没有理由不能正常工作,因为您无论如何都需要指定变量的大小。但是,如果它们在同一个段中,代码仍然可以正常工作,但当指定变量名时,它将始终使用第一个实例进行操作。
许多编程语言,如 Java 和 Rust,都有作用域,在作用域中声明的变量不能在作用域之外使用。LOLGraphics 没有这样的东西,因此如果您声明一个变量,它将永远存在。唯一重要的是声明变量的命令在使用它的命令运行之前运行。为了避免出现多个具有相同名称的变量,建议您在代码的开头声明变量,或者如果您认为这会使代码混乱,则可以在代码开头只调用一次的子程序中声明变量。
此外,重要的是要记住,尽管本书说“和地址或变量”,但 LOLGraphics 中的变量只是一个指向地址的标签。
要生成随机数,您需要做的就是键入以下命令:PLZ GIMME A RANDOM ONE/TWO/FOUR/EIGHT BYTE <address/variable>
。还有一个命令:PLZ CLEAR ALL TEH SEGMENTS
。尽管名字如此,它不会将所有段中的所有单元格设置为 0,也不会将它们设置为初始值。相反,它将所有段中的所有值设置为随机数。
有两种方法可以向用户请求输入。第一种方法更适合 CLI 应用程序,它使用以下命令:PLZ ASK TEH USR 2 GIMME A ONE/TWO/FOUR/EIGHT BYTE <address/variable>
。此命令将停止程序,激活输入按钮,等待用户输入一个数字,然后在他按下按钮后,它将用户输入的值保存在指定的地址或变量中。
第二种方法更适合某些情况,它使用以下命令:PLZ READ ONE/TWO/FOUR/EIGHT BYTE <address/variable>
。它不会等待用户按下输入按钮,甚至不会激活它,而是直接获取当前内容并将其放入指定的变量或地址中。如果输入字段为空,该命令将不做任何操作。这是“8462 演示”中使用的方法,它类似于 WASD 演示,只是使用的是数字键盘。您将在本书的后面学习如何编写这样的程序。
如果要等待用户输入一个数字并按下输入按钮,上述部分很有用。但是,如果您只想暂停程序并等待用户按下输入按钮怎么办?幸运的是,有一个专门用于此的命令!它是 PLZ WAIT 4 DA USR 2 REACT
。如果您打算在 LOLGraphics 中编写任何生产应用程序,这将很烦人,但它对于调试目的将非常有用。