Language Basics zh TW - Akiaaaa20/Bit8_CLI GitHub Wiki

語言基礎

English | 繁體中文 | 日本語 | 한국어

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 活在遊戲裡。

下一步

繼續閱讀:

Runtime API

也可以探索: