Skip to content

Language Basics ko

Shiraishi_AKi edited this page Oct 6, 2026 · 1 revision

์–ธ์–ด ๊ธฐ์ดˆ

English | ็น้ซ”ไธญๆ–‡ | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด

BIT8_CLI๋Š” ๊ฒŒ์ž„ ์Šคํฌ๋ฆฝํŠธ์— Lua 5.4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ .b8 ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. BIT8_CLI๋Š” Lua์˜ function ๋Œ€์‹  func๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ํŽธ๋ฆฌํ•œ ๋ฌธ๋ฒ•๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ์–ธ์–ด ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์Šคํฌ๋ฆฝํŠธ

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๋Š” ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ, ํ…Œ์ด๋ธ”, ํ•จ์ˆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ฑด๋ฌธ

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

ํ…Œ์ด๋ธ”

Lua ํ…Œ์ด๋ธ”์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

player = {
    x = 32,
    y = 32,
    health = 10
}

ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

player.x = player.x + 1

ํ…Œ์ด๋ธ”์€ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๋ผ์ดํ”„์‚ฌ์ดํด

๊ธฐ๋ณธ์ ์ธ 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

๊ด€๋ จ ํŽ˜์ด์ง€:

Clone this wiki locally