QBasic/高階圖形
外觀
< QBasic
動畫本質上是指在固定時間段內變化的圖形。我們將使用一個 do-loop 來實現。
SCREEN 7 ' we need to use a graphics enabled screen mode
animation 'calling the sub
SUB animation
SCREEN 7
x = 10 'set first x- coordinate
y = 10 'set first y-coordinate
DO
CLS ' going back to a blank screen so that the previous rectangle is erased
x = x + 3 ' setting increment of coordinate x
y = y + 3 ' setting increment of coordinate y
LINE (x, y)-(x + 5, y) 'drawing lines
LINE (x, y + 5)-(x + 5, y + 5)
LINE (x, y)-(x, y + 5)
LINE (x + 5, y)-(x + 5, y + 5)
SLEEP 2
LOOP UNTIL INKEY$ <> ""
END SUB
解釋
- 我們從預設的 QBasic 純文字螢幕切換到一個啟用圖形的螢幕。
- 我們呼叫了建立動畫的子程式。
- 我們開始了 do-loop until 迴圈。這使得動畫可以一直執行,直到使用者按下某個鍵結束動畫。
- 我們設定了座標的增量。這使得方框可以繪製在新的位置,而不是同一個位置。如果希望方框只在一個方向移動,則只需要設定一個變數的增量。
- 我們從每個座標繪製到另一個座標的線條。請注意,每次一個座標保持固定,而另一個座標發生變化。(這裡我指的是兩個座標集,第一個是起始座標集,第二個是結束座標集)
- 我們執行了一個 sleep 命令。這會暫停執行 2 秒。如果沒有這個命令,do-loop 會比我們想要的更快地執行,動畫會非常短暫。
- 透過使用 RND 為變數賦值,你可以建立隨機、不可預測的動畫。
在這一步,我們將使用 QB64 內建的 _mousehide、_mousex、_mousey、_mouseinput 和 _mousebutton 命令來控制滑鼠輸入。
These Functions only work in QB64!
_mousehide
screen 7
mousetrack
sub mousetrack
do while _mouseinput
cls
X = _mousex
Y = _mousey
LINE (X - 10, Y)-(X + 10, Y), 15
LINE (X, Y - 10)-(X, Y + 10), 15
IF _MOUSEBUTTON(1) THEN
IF X > A AND X < A + 25 AND Y > B AND Y < B + 25 THEN
message$ = "yes"
goto action
END IF
END IF
loop until inkey$ <> ""
- 這裡第一個函式 "_mousehide" 阻止預設的指標滑鼠格式顯示在螢幕上。
- Mouseinput 函式獲取滑鼠資訊。
- 接下來的函式 "_mousex" 和 "_mousey" 儲存滑鼠當前的 x 和 y 座標。
- 這些程式碼行繪製了一個基本的觸發器。
- "_mousebutton" 函式返回所按滑鼠按鈕的值,“1”表示按下左鍵。
- 如果滑鼠按鈕事件發生在某個封閉區域內,則會發出一個名為 "message$" 的訊息。這可以在以後使用。
- 如果滿足了之前的條件,則該過程跳轉到行標籤 "action",這裡可能會執行任何命令。
- 否則,該過程迴圈,直到滿足 "loop until" 條件。它也可以是與上面給出的條件不同的其他條件。
這些圖形和動畫可以用來建立一個完整的遊戲。你可以使用 "Inkey$" 命令來代替 "Mouse" 函式,來建立不同的場景和情況,每個場景和情況都有完整的程式碼來決定下一步發生的事情。
你可以使用 ".txt" 檔案來儲存資訊,而不是製作不包含任何使用者資訊的遊戲。這些資訊可以稍後被檢索,來建立一個具有完整 “職業” 選項的遊戲。