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