跳轉到內容

LOLGraphics 3.4 程式設計/LOLGraphics 中的圖形

100% developed
來自 Wikibooks,開放世界中的開放書籍

因此,在上一章中,您學習瞭如何在 LOLGraphics 中建立 cli 程式,並希望您對該程式語言名稱中前三個字母的來源有所瞭解。在本章中,您將學習 LOLGraphics 的圖形部分,在下一章中,我們將結合我們所學的一切,在 LOLGraphics 中製作一個簡單的遊戲。

P.S. “8462 演示”將在本章中,下一章中的遊戲將更加高階。

繪製芝士漢堡

[編輯 | 編輯原始碼]

我們不應該忘記,這種程式語言的靈感來自 LOLCODE,而 LOLCODE 又來自 LOLCAT 模因。其中最著名的一種是帶有“I Can Has Cheezburger?”(lolspeak 中的意思是 Can I have a cheeseburger)文字的貓。因此,在 LOLGraphics 中包含一個在螢幕上繪製芝士漢堡的命令很有道理。如果您編寫以下程式碼,您將在螢幕的左上角看到一個芝士漢堡 🍔


HAI 3.4 0 100
IM IN UR CODE EXECUTIN UR KOMANDZ

I CAN HAS A CHEEZBURGER?

IM OUTTA UR CODE

這是該程式的輸出

現在這很有趣,但是如果我們想在螢幕上的不同位置繪製芝士漢堡,而不僅僅是在左上角呢?

LOLGraphics 中的座標

[編輯 | 編輯原始碼]

為了自定義芝士漢堡的位置,我們需要使用 LOLGraphics 座標系,所以首先我們需要了解它的工作原理。對於那些使用過除 scratch 以外的其他語言的圖形的人來說,這將是直觀的,但對於其他人來說則不然。

螢幕的左上角是點 (0,0),也稱為 x=0 和 y=0。x 軸的正方向是向右,y 軸的正方向是向下。x 軸的負軸是向左,y 軸的負軸是向上。

對於不習慣程式設計的人來說,這可能令人困惑,他們習慣於數學中的 y 軸正方向是向上。然而,在計算機中,它是向下的。

自定義芝士漢堡的位置

[編輯 | 編輯原始碼]

命令 I CAN HAS A CHEEZBURGER? 不接受任何引數。那麼我們如何告訴直譯器我們想要在何處繪製芝士漢堡呢?使用命令 PLZ DELIVR MAH CHEEZBURGERS 2 <x> <y>!此命令不會影響已繪製在螢幕上的芝士漢堡的狀態(可以有任意數量的芝士漢堡),而只會影響之後繪製的芝士漢堡。該命令可以接受數字或兩個位元組變數作為引數。

以下程式碼將在螢幕上繪製兩個芝士漢堡,一個在左上角,另一個在座標 (200,200)


HAI 3.4 0 100
IM IN UR CODE EXECUTIN UR KOMANDZ

I CAN HAS A CHEEZBURGER?
PLZ DELIVR MAH CHEEZBURGERS 2 200 200
I CAN HAS A CHEEZBURGER?

IM OUTTA UR CODE

現在,有時您可能希望清除繪製在螢幕上的內容並從頭開始。這就是 PLZ CLEAR TEH SCREEN 命令存在的意義。

8462 演示

[編輯 | 編輯原始碼]

8462 演示類似於 WASD 演示,只是使用數字鍵盤。它包含在編輯器中作為示例程式。現在我們已經學習了製作它所需的一切。這是原始碼


HAI 2.5 0 1
IM IN UR CODE EXECUTIN UR KOMANDZ

I HAS A TWO BYTE DAT IZ CALLED X
I HAS A TWO BYTE DAT IZ CALLED Y
I HAS A ONE BYTE DAT IZ CALLED BUTTON

PLZ SET TWO BYTE X 150
PLZ SET TWO BYTE Y 100

PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
FOREVER RUN CHECK

IM OUTTA UR CODE

IM IN UR SUBPROGRAM DAT IZ KALLED CHECK
PLZ SET ONE BYTE BUTTON -1
PLZ READ ONE BYTE BUTTON

SWITCH [BUTTON]
CASE 8 UP
CASE 2 DOWN
CASE 4 LEFT
CASE 6 RIGHT
CASE 86,68,9 UP_RIGHT
CASE 48,84,7 UP_LEFT
CASE 42,24,1 DOWN_LEFT
CASE 62,26,3 DOWN_RIGHT

IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED LEFT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED RIGHT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP_RIGHT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X+10
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP_LEFT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X-10
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN_RIGHT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X+10
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN_LEFT
PLZ CLEAR TEH SCREEN
PLZ SET TWO BYTE X X-10
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
I CAN HAS A CHEEZBURGER?
IM OUTTA UR SUBPROGRAM

滾動背景

[編輯 | 編輯原始碼]

使用您上面學到的知識,可以輕鬆地製作滾動背景。此類演示包含在 LOLGraphics 編輯器中作為示例程式。但是,為此,您需要一個比螢幕更大的影像,以便您實際上需要滾動瀏覽它。可以從檔案載入該影像(您將在本章中學習如何載入),但是示例程式使用一個包含在 LOLGraphics 中的非常大的影像。可以使用命令 PLZ DRAW BACKGROUND 繪製。

不要忘記,如果您想向左移動,實際上是在向右移動影像。如果您想向右移動,實際上是在向左移動影像。如果您想向上移動,實際上是在向下移動影像,如果您想向下移動,實際上是在向上移動影像。

滾動背景原始碼

[編輯 | 編輯原始碼]
 
HAI 3.4 0 1
IM IN UR CODE EXECUTIN UR KOMANDZ

I HAS A TWO BYTE DAT IZ CALLED X
I HAS A TWO BYTE DAT IZ CALLED Y
I HAS A ONE BYTE DAT IZ CALLED BUTTON

PLZ SET TWO BYTE X 0
PLZ SET TWO BYTE Y 0
PLZ DRAW BACKGROUND

FOREVER RUN CHECK

IM OUTTA UR CODE

IM IN UR SUBPROGRAM DAT IZ KALLED CHECK
PLZ SET ONE BYTE BUTTON -1
PLZ READ ONE BYTE BUTTON

SWITCH [BUTTON]
CASE 8 UP
CASE 2 DOWN
CASE 4 LEFT
CASE 6 RIGHT
CASE 86,68,9 UP_RIGHT
CASE 48,84,7 UP_LEFT
CASE 42,24,1 DOWN_LEFT
CASE 62,26,3 DOWN_RIGHT

IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED LEFT
PLZ SET TWO BYTE X X+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED RIGHT
PLZ SET TWO BYTE X X-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP_RIGHT
PLZ SET TWO BYTE X X-10
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED UP_LEFT
PLZ SET TWO BYTE X X+10
PLZ SET TWO BYTE Y Y+10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN_RIGHT
PLZ SET TWO BYTE X X-10
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

IM IN UR SUBPROGRAM DAT IZ KALLED DOWN_LEFT
PLZ SET TWO BYTE X X+10
PLZ SET TWO BYTE Y Y-10
PLZ DELIVR MAH CHEEZBURGERS 2 X Y
PLZ CLEAR TEH SCREEN
PLZ DRAW BACKGROUND
IM OUTTA UR SUBPROGRAM

繪製線條和形狀

[編輯 | 編輯原始碼]

要繪製一條線,請編寫 PLZ DRAW LINE <x1> <y1> <x2> <y2>。座標 x1、y1、x2、y2 可以是數字或 2 位元組變數。您還可以使用 PLZ CHANGE PAINT BRUSH <color> 繪製自定義顏色。與自定義芝士漢堡位置一樣,自定義畫筆顏色不會影響螢幕上已有的內容,只會影響之後繪製的內容。

您可以使用 PLZ DRAW RECT <x1> <y1> <width> <height> 繪製矩形,使用 PLZ FILL RECT <x1> <y1> <width> <height> 填充矩形。此外,您可以使用 PLZ DRAW ELLIPSE <x1> <y1> <width> <height> 繪製橢圓,並使用 PLZ FILL ELLIPSE <x1> <y1> <width> <height> 填充。您還可以使用 PLZ DRAW POLY <points> 繪製自定義多邊形。將 <points> 替換為大於或等於 6 的偶數個引數,這些引數代表至少 3 個點的 x,y 座標。

以上所有命令都接受數字或 2 位元組變數作為引數。此外,如果您想繪製一個有輪廓的形狀,請先呼叫填充命令,然後更改畫筆顏色,然後才呼叫繪製命令。

此外,可以使用 PLZ FILL TEH SCREEN 命令用畫筆的顏色填充整個螢幕。

從檔案載入影像

[編輯 | 編輯原始碼]

要載入影像,請使用命令 PLZ LOAD IMAGE EXAMPLE EXAMPLE.PNG。如果您想在螢幕上繪製 example.png,請鍵入 PLZ DRAW IMAGE EXAMPLE。這將繪製在為芝士漢堡設定的位置的影像。

華夏公益教科書