跳到内容

ZZT-OOP/语法

来自维基教科书,开放的书籍,开放的世界

ZZT-OOP 具有非常简单的语法,以下示例展示了这一点

@Fred
'Objects run their programs right away;
'the following command will temporarily
'halt program execution.
#end
:touch
$This is an object named Fred!
!move;Tell Fred to move around.
#end
:move
/rndp rndne/rndp rndne
?n?n?n?n?s?s?s?s
FRED: I moved around!

每个语句的第一个字符决定了该行其余部分的处理方式。例如,第一行以“at”符号 (@) 开头,使其成为一个名称;第二行以撇号开头,使其成为一个注释,等等... 我们对 ZZT-OOP 语法的讨论将继续列出所有可能的起始字符及其影响。

' (注释)

[编辑 | 编辑源代码]

这是一个注释,它除了告知您或查看代码的人某个函数的功能外,什么也不做。如果您有一个非常大的文件 (>320KB),请删除您可能拥有的任何这些注释(不包括用作zapped 标签的注释)。此外:该语句实际上不是注释,而是zapped 前标签(这意味着您只能在恢复它之后跳转到它)

(文本), $(文本)

[编辑 | 编辑源代码]

这会在屏幕底部打印一行文本,或者如果有多行,则打印滚动条。使用$(文本) 会以白色打印以居中方式显示在滚动条中的文本。

:(标签)

[编辑 | 编辑源代码]

这是一个标签。您可以跳转到标签。是的。您也可以让其他程序跳转到标签。

!(标签);(文本)

[编辑 | 编辑源代码]

这会在滚动条中以白色打印一行文本,并以粉红色箭头作为项目符号。这是一个选项。选择它将调用给定的标签。

@ (对象名称)

[编辑 | 编辑源代码]

“@”字符表示该行其余部分是对象的名称。在上面的示例中,行@Fred 给对象命名为“Fred”。对象名称的唯一限制是它们必须在程序的第一行中声明;文件其他地方的“@”语句将被忽略。

如果命名的对象打开一个文本框,对象的名称将出现在文本框的顶部,替换通用标题“交互”。没有必要给对象命名。

# (通用命令)

[编辑 | 编辑源代码]

“#”字符表示一个命令,或跳转到一个标签。例如,示例程序使用命令#end 停止程序执行。存在许多其他命令;它们将在接下来的几章中详细讨论。现在,知道它们的样子就足够了。

/ 和 ? (移动)

[编辑 | 编辑源代码]

“/”字符指示对象移动。对象移动的方向由后面的文本指示;例如,/n 使对象向北移动一个空格(向上移动一个空格)。当使用“/”并且对象无法向指定方向移动时,对象将简单地等待,直到它能够向该方向移动;如果对象面对的是不会移动的东西(例如墙壁),这会导致对象永远等待。“?”字符的作用类似于“/”,但有一个区别:“?”移动命令如果对象无法向指定方向移动,则将被忽略。

“?”和“/”都是独一无二的,因为它们可以“堆叠”;这意味着一个移动指令可以后跟另一个语句。例如,在示例程序中,您看到了代码?n?n?n?n?s?s?s?s。当此代码运行时,将从左到右执行移动指令;对象将尝试向上移动四个空格,然后向下移动四个空格。语句类型可以混合使用;例如,说/n?n?n/n 甚至/n/n/s/s#end 都是完全可以的。但是,您不能将一个语句堆叠到一个非移动语句上。也就是说,/n/s/e/w#end 是有效的 ZZT-OOP,但/n/s/e/w#end/n 不是

华夏公益教科书