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 中編寫任何生產應用程式,這將很煩人,但它對於除錯目的將非常有用。