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
不是。