Language Basics zh TW - Akiaaaa20/Bit8_CLI GitHub Wiki
語言基礎
BIT8_CLI 使用 Lua 5.4 編寫遊戲腳本。
遊戲腳本通常使用 .b8 副檔名。BIT8_CLI 也提供一些便利寫法,例如使用 func 代替 Lua 的 function。
本指南介紹製作簡單遊戲時會用到的語言功能。
第一個腳本
建立 main.b8:
func init()
x = 32
y = 32
end
func update()
end
func draw()
cls(0)
pix(x, y, 7)
end
執行專案:
bit8 run .
程式會在畫面中央附近繪製一個像素。
函式
Lua 通常使用 function 宣告函式。
BIT8_CLI 也支援 func:
func greet()
print("Hello, BIT8_CLI!")
end
等同於 Lua 的:
function greet()
print("Hello, BIT8_CLI!")
end
兩種寫法都可以在 BIT8_CLI 腳本中使用。
函式可以接收參數並回傳數值:
func add(a, b)
return a + b
end
result = add(5, 3)
變數
Lua 變數不需要明確宣告型別。
x = 10
speed = 2
name = "Player"
alive = true
使用 local 建立區域變數:
local score = 0
Lua 支援數字、字串、布林值、Table、函式等資料型別。
條件判斷
使用 if、elseif 和 else:
health = 5
if health <= 0 then
print("Game Over")
elseif health < 3 then
print("Low Health")
else
print("Ready")
end
Lua 使用 then 表示條件區塊開始,並以 end 結束。
迴圈
數字 for 迴圈:
for i = 1, 5 do
print(i)
end
while 迴圈:
local count = 0
while count < 5 do
count = count + 1
end
Table
Lua 的 Table 可以儲存多個數值:
player = {
x = 32,
y = 32,
health = 10
}
可以這樣存取欄位:
player.x = player.x + 1
Table 經常用來整理遊戲資料。
遊戲生命週期
基本的 BIT8_CLI 遊戲使用三個生命週期函式:
func init()
end
func update()
end
func draw()
end
init()
遊戲初始化時執行。
用來設定初始數值。
update()
在模擬更新時執行。
BIT8_CLI 使用固定 30 Hz 模擬更新。
適合處理移動、輸入與遊戲邏輯。
draw()
負責繪製目前的遊戲狀態。
繪圖指令通常放在這裡。
繪圖
清除畫面:
cls(0)
繪製像素:
pix(32, 32, 7)
繪製填滿的矩形:
rectfill(10, 10, 20, 20, 7)
BIT8_CLI 使用固定 64×64 遊戲 framebuffer。
輸入
使用 btn() 檢查按鈕是否持續按住:
if btn(LEFT) then
x = x - 1
end
可用的按鈕常數包含:
UP
DOWN
LEFT
RIGHT
A
B
btnp() 用來檢查新的按下事件,而不是持續按住的狀態。
可以移動的像素
以下範例結合變數、輸入與繪圖:
func init()
x = 32
y = 32
end
func update()
if btn(LEFT) then
x = x - 1
end
if btn(RIGHT) then
x = x + 1
end
if btn(UP) then
y = y - 1
end
if btn(DOWN) then
y = y + 1
end
end
func draw()
cls(0)
pix(x, y, 7)
end
儲存檔案並執行:
bit8 run .
Main Script 與 Node Script
BIT8_CLI 同時支援 Main Script 和 Node Script。
Main Script 負責協調整個遊戲。
Node 可以擁有自己的腳本與執行狀態。
Node Script 可以透過 self 存取所屬的 Node。
例如:
func update()
self.x = self.x + 1
end
更多資訊請閱讀 Node。
Main 組裝遊戲,Node 活在遊戲裡。
下一步
繼續閱讀:
也可以探索: