跳到內容

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

華夏公益教科書