[01] ๋ก๋ธ๋ก์ค ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๋ฐ LUA ๊ธฐ์ด ๋ชจ์
๊ฒ๊ณต์ ์ด์์จ ๋์๊ฒ ๋ก๋ธ๋ก์ค ์ ๋๋ ๊ป์ด์ง.. ๊ป์ด์ง.. ๊ป์ด์ผ.. ๊ป์ผ๊ฑธ..?
ํด๋ณด์๊ณ ..... ๊ฐ๋ณด์๊ณ ......
๋ก๋ธ๋ก์ค ์คํ๋์ค๋ฅผ ์คํํ ํ '์ ํ์ผ'์ ์ ํํ์ฌ ์ ๊ท ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์.
๋ก๋ธ๋ก์ค UI ์ค๋ช ์ ๊ฒ์ํ๋ฉด ๋ง์ด ๋์ค๋ ๊ถ๊ธํ๋ฉด ์ฐพ์๋ณด๋๋ก ํ์.
์ผ๋จ ํต์ฌ์ผ๋ก ์์์ผ ํ ๊ฒ์ ์๋์ ๊ฐ๋ค.
WSAD : ์นด๋ฉ๋ผ ์ด๋
QE : ์นด๋ฉ๋ผ๋ฅผ ์ ์๋๋ก ์ด๋
F : ํ์ธ ์ ํ ํ Fํค ๋๋ฅด๋ฉด ์์ธํ ๋ณด๊ธฐ
์ค๋ฅธ์ชฝ ํด๋ฆญ ํ ๋๋๊ทธ : ์ดํด๋ณด๊ธฐ
ํ : ์ค ์ธ/์์
ํํธ๋ผ๋๊ฒ ์กด์ฌํ๋๋ฐ ์ด๋ฅผ ์ฌ์ฉํด์ ๋งต์ ์ฌ์ง๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฌผ์ ๋ง๋ค ์ ์๋ค.
์ด ํํธ๋ฅผ ๋ฐฐ์นํ๊ฒ ๋๋ฉด ์ฐ์ธก ํ์๊ธฐ์ Part๋ผ๊ณ ๋จ๊ฒ ๋๋๋ฐ
์ด ํํธ์ ๋ง์ฐ์ค๋ฅผ ๊ฐ๋ค๋์ด ์์ ๋จ๋ + ๋ฒํผ์ ๋๋ฌ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ก๋ธ๋ก์ค์์์ ์คํฌ๋ฆฝํธ๋ LUA๋ค.
LUA์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ดํด๋ณด์.
LUA๋ฅผ ์ฒ์ ํด๋ณธ ๋์ ๋๋์ ์. ์ด๊ฒ์ด ์ฝ๋ฉ?.
C++์ฒ๋ผ ์๊น๋ค๋กญ๋ค๋.
๋ญ์ง, ์ด ์ง๋ผ๋ฉด ์ํ๋ง์ ๋๋..
1. ์ฃผ์
์ฐ๋ฆฌ๊ฐ ํํ ์๋ ์ฃผ์์ผ๋ก ํ๋ก๊ทธ๋จ ๋ด๋ถ์์ ๋ช ๋ น์ด ์ฒ๋ฆฌ๋์ง ์์์ ๋ฉ๋ชจ์ฅ์ฒ๋ผ ์ธ ์ ์๋ค.
-- ์ด๊ฑธ๋ก ์ฃผ์์ฒ๋ฆฌ๊ฐ ๋๋ค?
print("์ถ๋ ฅ๋ฌธ์
๋๋ค.")
--[[
์ด
๊ฒ
์ด
์ฌ
๋ฌ
์ค
์ฃผ
์
?
]]
2. LUA ๊ธฐ๋ณธ ๊ท์น
- ํญ, ์ค๋ฐ๊ฟ, ๋์ด์ฐ๊ธฐ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
-- ์์ 1: ์ผ๋ฐ์ ์ธ ์์ฑ
print("Hello, World!")
-- ์์ 2: ๊ณต๋ฐฑ, ์ค๋ฐ๊ฟ์ด ๋ง์ ๊ฒฝ์ฐ
print
(
"Hello, World!"
)
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ณ Yang, yang, YANG๋ ๋ค ์๋ก ๋ค๋ฅธ ์ ๋ก ์ธ์ํ๋ค.
-- ์์ : ๋์๋ฌธ์ ๊ตฌ๋ถ
local Yang = "Yang with uppercase Y"
local yang = "yang with lowercase y"
local YANG = "YANG with all uppercase"
print(Yang) -- ์ถ๋ ฅ: Yang with uppercase Y
print(yang) -- ์ถ๋ ฅ: yang with lowercase y
print(YANG) -- ์ถ๋ ฅ: YANG with all uppercase
- ๋์ด์ฐ๊ธฐ๋ก๋ ์์๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค.
-- ์์ : ๋์ด์ฐ๊ธฐ๋ฅผ ํตํ ์ธ์ ๊ตฌ๋ถ
function add(a, b)
return a + b
end
print(add(10, 20)) -- ์ถ๋ ฅ: 30
- ๋ฌธ๋ฒ์ด ์๊ฒฉํ์ง ์์ ์ธ์ด๋ ๊ณต๋ ์์
์ ํ ๋ ๋จ์ด ์ด ์ฝ๋๋ฅผ ์์๋ณด๊ธฐ๊ฐ ์์ฒญ ํ๋ค์ด ์ง ์ ์๋ค.
- ๊ทธ๋์ ์คํ๋ ค ๋ฃจ์์ฒ๋ผ ๋ฌธ๋ฒ์ ์์ ๋๊ฐ ๋์ ์ธ์ด๋ ๊ณต๋ ์์
์ ์ฝ๋ ์์ฑ ๊ท์ฝ์ ๋ช
ํํ ์ง๋ ๊ฒ ์ข๋ค.
-- ์์ 1: ํจ์ ์ ์ธ ๋ฐ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ถ๊ฐ (์ ํ์ )
function greet() print("Hello!") end;
-- ์์ 2: ๊ฐ์ ํจ์์ง๋ง ๋ค๋ฅธ ์คํ์ผ
function greet()
print("Hello!")
end
greet() -- ์ถ๋ ฅ: Hello!
- ๋ฃจ์ ํจ์: ํ
์คํธ๋ฅผ ํ๋ฉด(์ถ๋ ฅ ๋ฉ๋ด)์ ์ถ๋ ฅํ๋ ํจ์
- ์ถ๋ ฅํ ๋ฌธ์๋ฅผ ์ง์ ์
๋ ฅํ๊ณ ์ถ์ผ๋ฉด " "์์ ๋ฌธ์๋ฅผ ์
๋ ฅํ๋ฉด ๋จ
- ๋ณ์์ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์
๋ ฅํ๊ณ ์ถ์ผ๋ฉด ๋ณ์ ์ด๋ฆ์ ์
๋ ฅํ๋ฉด ๋๋ค.
-- ์์ : ๋ฌธ์์ด ์ถ๋ ฅ
print("Hello, Lua!") -- ์ถ๋ ฅ: Hello, Lua!
-- ์์ : ๋ณ์์ ์ ์ฅ๋ ๋ฌธ์์ด ์ถ๋ ฅ
local message = "This is a variable"
print(message) -- ์ถ๋ ฅ: This is a variable
3. ๋ณ์(Variable)
๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ ์๋ฏธํ๋๋ฐ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์์ ์ด๋ค.
์๋ฅผ ๋ค์ด, ์บ๋ฆญํฐ์ HP(์ฒด๋ ฅ)๋ฅผ ๊ด๋ฆฌํ ๋, ๋ง์ผ๋ฉด HP๊ฐ ๊ฐ์ํ๊ณ , ํ๋ณต ์์ดํ ์ ์ฌ์ฉํ๋ฉด HP๊ฐ ์ฆ๊ฐํ๋ฉฐ, HP๊ฐ 0์ด ๋๋ฉด ์บ๋ฆญํฐ๊ฐ ์ฌ๋งํ๋ ๊ฒฝ์ฐ ๋ณ์๋ก ์บ๋ฆญํฐ์ HP๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฐ์ดํธํ ์ ์์ด์ผ ํ๋ค. ์ด๋ฅผ ์คํฌ๋ฆฝํธ๋ก ์ง๋ฉด ์๋์ ๊ฐ๋ค.
local HP = 100 -- ์ฒด๋ ฅ ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
HP = HP - 10 -- ๋ฐ๋ฏธ์ง๋ฅผ ์
์์ ๋ ์ฒด๋ ฅ ๊ฐ์
HP = HP + 30 -- ํ๋ณต ์์ดํ
์ฌ์ฉ ์ ์ฒด๋ ฅ ํ๋ณต
[ ๋ณ์๋ช ๊ท์น ]
- ๋ณ์๋ช ์ ์๋ฌธ๊ณผ ์ซ์๋ก ๊ตฌ์ฑํ ์ ์๋ค.
- ์ซ์๋ก ์์ํ๋ ๋ณ์๋ช ์ ๋ง๋ค ์ ์๋ค.
- ์์ฝ์ด(and, or, not ๋ฑ)๋ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์ ์์ฝ์ด๋ ๋ฏธ๋ฆฌ ํจ์๋ ๊ธฐ๋ฅ์ผ๋ก ์ ์๋ ์ด๋ฆ๋ค.
- ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ณ์๋ช ์ด๋ ํจ์๋ช ๊ณผ ์ค๋ณตํด์ ์ฌ์ฉํ ์ ์๋ค.
[ ๋ณ์์ ์ข ๋ฅ ]
- ์ง์ญ ๋ณ์ (Local Variable)
- ํน์ ์ฝ๋ ๋ธ๋ก ๋ด์์๋ง ์ ํจํ๋ฉฐ, ํด๋น ๋ธ๋ก์ ๋ฒ์ด๋๋ฉด ์ฌ๋ผ์ง๋ค.
- ๋ณ์๋ฅผ ์ ์ธํ ๋ local ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
- local์ ์๋ตํ๋ฉด ์ ์ญ ๋ณ์๋ก ๊ฐ์ฃผ๋๋ค.
- ์ ์ญ ๋ณ์ (Global Variable)
- ์คํฌ๋ฆฝํธ ์ ์ญ์์ ์ฌ์ฉํ ์ ์๋ ๋ณ์๋ก.๋ก๋ธ๋ก์ค ์คํฌ๋ฆฝํธ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋์ง ์๋๋ค.
[ ๋ณ์์ ๊ตฌ์ฑ ์์ ]
- ์ด๋ฆ: ๋ณ์๋ฅผ ์๋ณํ๋ ์ด๋ฆ(์๋ณ์).
- ๊ฐ: ๋ณ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ.
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์: ๊ฐ์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์น.
- ๋ฐ์ดํฐํ: ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ฉฐ ์๋ฃํ์ด๋ผ๊ณ ํจ.
4. ์๋ฃํ(Data Types)
๋ค๋ฅธ ์ธ์ด์ ๋นํด ์๋ฃํ์ด ๊ฐ๋จํ๋ค. ์์ฃผ ในใ .
1. ์ซ์ (Number)
- ์ ์, ์ค์ ๋ชจ๋ ์ซ์ ์๋ฃํ์ผ๋ก ์ฒ๋ฆฌ.
- ์ ์๋ ์ค์๋ฅผ ๋ณ๋๋ก ๊ตฌ๋ถํ์ง ์๊ณ ์๋์ผ๋ก ์ฒ๋ฆฌ.
local numA = 10 -- ์ ์
local numB = -1.5 -- ์ค์
local numC = 1.05e4 -- ๊ณผํ์ ํ๊ธฐ๋ฒ
2. ๋ฌธ์ (String)
- ๋ฌธ์ ๋ฐ์ดํฐ๋ ํฐ๋ฐ์ดํ(" ") ๋๋ ์์๋ฐ์ดํ(' ')๋ก ๋ฌถ์ด ํํํ๋ค.
local heroName = "ํ๊ธธ๋" -- ๋ฌธ์ ์๋ฃํ
3. nil
- ๊ฐ์ด ์๋ ์ํ๋ฅผ ๋ํ๋ธ๋ค(C++์ null). ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก nil๋ก ๋๋ค.
local emptyVar = nil -- ๊ฐ์ด ์์
local weapon = nil -- ๋ฌด๊ธฐ๊ฐ ์์ง ์์
print(weapon) -- ์ถ๋ ฅ: nil
weapon = "๊ฒ" -- ๋ฌด๊ธฐ ์ฅ์ฐฉ
print(weapon) -- ์ถ๋ ฅ: ๊ฒ
4. boolean
- ์ฐธ(true) ๋๋ ๊ฑฐ์ง(false) ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋ชจ๋ ๋ ผ๋ฆฌ์ ์ธ ํํ์์ ์ฌ์ฉ๋๋ค.
local isAlive = true -- ์ฐธ
local hasJob = false -- ๊ฑฐ์ง
5. ํ ์ด๋ธ (Table)
- ๋ฃจ์์ ๋ณตํฉ ์๋ฃํ์ผ๋ก ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ์ ๊ตฌํํ ์ ์์ผ๋ฉฐ ์ด๋ ๋ค์์ ์์ธํ...
5. ์ฐ์ฐ์(Operators)
1) ์ฐ์ ์ฐ์ฐ์ (Arithmetic Operators)
- ๋ง์ : +
- ๋บ์ : -
- ๊ณฑ์ : *
- ๋๋์ : /
- ๊ฑฐ๋ญ์ ๊ณฑ: ^
- ๋๋จธ์ง: %
print(1 + 2) -- 3
print(9 % 4) -- 1
2) ๊ด๊ณ ์ฐ์ฐ์ (Relational Operators)
- ํฌ๋ค: >
- ์๋ค: <
- ๊ฐ๋ค: ==
- ํฌ๊ฑฐ๋ ๊ฐ๋ค: >=
- ์๊ฑฐ๋ ๊ฐ๋ค: <=
- ๊ฐ์ง ์๋ค: ~=
print(5 == 6) -- false
print(7 >= 8) -- false
3) ๋ ผ๋ฆฌ ์ฐ์ฐ์ (Logical Operators)
- and: ๋ ์กฐ๊ฑด์ด ๋ชจ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํ
- or: ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํ
- not: ์กฐ๊ฑด์ ๋ฐ๋ ๊ฐ์ ๋ฐํ
print(true and false) -- false
print(not true) -- false
6. ์ ์ด๋ฌธ (Control Statements)
: ์ฝ๋์ ์คํ ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ์ดํ ์ ์๋ ๊ตฌ๋ฌธ
1) ์กฐ๊ฑด๋ฌธ (Conditional Statements)
: ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํํ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ๋ ๊ตฌ๋ฌธ
- if ๋ฌธ
if ์กฐ๊ฑด then
-- ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ์คํ
end
- if-else๋ฌธ
if ์กฐ๊ฑด then
-- ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ์คํ
else
-- ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์คํ
end
- if-elseif-else ๋ฌธ
if ์กฐ๊ฑด1 then
-- ์กฐ๊ฑด1์ด ์ฐธ์ผ ๋ ์คํ
elseif ์กฐ๊ฑด2 then
-- ์กฐ๊ฑด2๊ฐ ์ฐธ์ผ ๋ ์คํ
else
-- ๋ชจ๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์คํ
end
2) ๋ฐ๋ณต๋ฌธ (Loops)
: ๋ฃจ์์์๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก while, for ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
local i = 1
while i <= 5 do
print(i)
i = i + 1
end
1) while๋ฌธ
- ์กฐ๊ฑด์ด ์ฐธ์ธ ๋์ ๋ฐ๋ณตํด์ ์ฝ๋๋ฅผ ์คํํ๋ค.
- ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด ๋ฐ๋ณต์ ๋ฉ์ถ๋ค.
while ์คํ ์กฐ๊ฑด do
-- ์คํ๋ฌธ
end
local num = 0
while num < 10 do
num = num + 1
print(num)
end
print("num์ ๊ฐ์ " .. num) -- 10
2) repeat๋ฌธ
- ์กฐ๊ฑด์ ํ์ธํ๊ธฐ ์ ์ ์คํ๋ฌธ์ ๋จผ์ ์คํํ๋ค.
- ์กฐ๊ฑด์ด ์ฐธ์ด ๋๋ฉด ๋ฐ๋ณต์ ๋ฉ์ถ๋ค.
repeat
-- ์คํ๋ฌธ
until ์คํ ์กฐ๊ฑด
local num = 10
repeat
num = num - 1
print(num)
until num == 0
3) for๋ฌธ
- ์ฃผ์ด์ง ๋ฒ์ ๋ด์์ ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉฐ ๋ฐ๋ณตํ๋ค.
for ๋ณ์ = ์ด๊ธฐ๊ฐ, ์ต์ข
๊ฐ, ์ฆ๊ฐ๊ฐ do
-- ์คํ๋ฌธ
end
for i = 1, 5 do
print("๋ฐ๋ณต " .. i)
end
for a = 1, 10 do
if a % 3 ~= 0 then -- ์ ์ธํ๊ณ
print(a)
end
end
+ Random ๋ชจ๋ ์ฌ์ฉ๋ฒ
-- 1. math.random() ์ฌ์ฉ๋ฒ
-- 1.1 0~1 ์ฌ์ด์ ์ค์ (๊ธฐ๋ณธ)
print(math.random()) -- ์: 0.124578
-- 1.2 1~N ์ฌ์ด์ ์ ์
print(math.random(10)) -- ์: 1์์ 10 ์ฌ์ด์ ์ ์
-- 1.3 N~M ์ฌ์ด์ ์ ์
print(math.random(10, 20)) -- ์: 10์์ 20 ์ฌ์ด์ ์ ์
-- 2. seed
--[[
๋๋ค ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํจํฐ์ ์๊ฐ ๋ฑ์ ํ์ฉํด ๋์๋ฅผ ์์ฑํ๋ค.
math.random()์ ์ผ์ ํจํด์ด ์์ด ํญ์ ๋์ผํ ํจํด์ผ๋ก ๋์ค๊ธฐ์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด seed๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
]]
math.randomseed(os.time()) -- ํ์ฌ ์๊ฐ์ ์๋๋ก ์ค์
print(math.random(1, 100)) -- 1์์ 100 ์ฌ์ด์ ๋์
7. ์ฝ๋์ ๊ตฌ์ญ (Code Block)
- ์ฝ๋์ ๊ตฌ์ญ์ ๋๋๋ ๊ฒฝ์ฐ:
- if, while, repeat, for ๊ฐ์ ์ ์ด ๊ตฌ์กฐ์ ์์๊ณผ ๋
- ํจ์ ์ ์ ๋ถ๋ถ
- do - end ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ก์ ๋๋
- ๋ชจ๋ ๊ฒฝ์ฐ์์ end๋ก ๋ธ๋ก์ ๋์ ํ์ํ๋ค.
1) do - end
- ์ฝ๋ ๊ตฌ์ญ์ ๋๋๊ธฐ ์ํ ํค์๋.
- ์ง์ญ ๋ณ์๋ ๋ธ๋ก ๋ด๋ถ์์๋ง ์ ํจํ๋ฉฐ, ๋ธ๋ก์ ๋ฒ์ด๋๋ฉด ์๋ฉธ๋๋ค.
local a = 10
print(a) -- 10
do
print(a) -- 10
local a = 5 -- ์๋ก์ด 'a'๋ ์ด ๋ธ๋ก์์๋ง ์ ํจ
print(a) -- 5
end
print(a) -- 10 (๋ฐ๊นฅ์ 'a'๋ ์ฌ์ ํ 10)
8. ํจ์(Function)
: ํน์ ํ ์์ ์ ์ํํ๋ ์ฝ๋๋ค์ ์งํฉ
* ํจ์์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
function ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์)
-- ์คํํ ์ฝ๋
return ๋ฐํ๊ฐ
end
1) ํจ์ ์ ์ : function ํค์๋ ์ฌ์ฉ, ํ์ํ ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ ์๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๊ฐ๋ฅ
ํจ์ ์ด๋ฆ : ํจ์ ํธ์ถ ์ ์ฌ์ฉํ ์ด๋ฆ, ๋งค๊ฐ๋ณ์ : ํจ์ ์ฒ๋ฆฌ ๋ฐ์ดํฐ ์ ๋ฌ ๋ณ์, return : ๊ฒฐ๊ณผ ๋ฐํ ๋ ์ฌ์ฉ
2) ํจ์ ํธ์ถ : ์ ์๋ ํจ์๋ ํจ์ ์ด๋ฆ์ ํตํด ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
3) ํจ์ ์ด๋ฆ ์ค์ : ๊ทธ ํจ์๊ฐ ์ํํ๋ ๋์์ ์ฝ๊ฒ ์ ์ ์๋๋ก ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ์ค์ ํ๋ค.
ํจ์ ์ด๋ฆ ๊ท์น:
- ํจ์ ์ด๋ฆ์ ์ํ๋ฒณ, ์ซ์, ์ธ๋์ค์ฝ์ด(_)๋ก ๊ตฌ์ฑํ ์ ์์ง๋ง, ์ซ์๋ก ์์ํ ์๋ ์๋ค.
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ค. ์๋ฅผ ๋ค์ด, AddNumbers์ addnumbers๋ ๋ค๋ฅธ ํจ์๋ก ์ทจ๊ธ๋๋ค.
* ํจ์์ ์ข ๋ฅ
-- 1. ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ด ์๋ ํจ์
function Shout()
print("์๋ฆฌ์ง๋ฌ!")
end
Shout()
-- 2. ๋งค๊ฐ๋ณ์๋ง ์๋ ํจ์
function Greet(name)
print("์๋
ํ์ธ์, " .. name .. "!")
end
Greet("ํ๊ธธ๋")
-- 3. ๋ฐํ๊ฐ๋ง ์๋ ํจ์
function GetMyName()
return "์ ๋น"
end
print(GetMyName())
-- 4. ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ด ๋ชจ๋ ์๋ ํจ์
function AddNum(a, b)
return a + b
end
print(AddNum(5, 3))
function CalculateDamage(minAttack, maxAttack, critChance)
local damage = math.random(minAttack, maxAttack)
if math.random() < critChance then
return damage * 2 -- ํฌ๋ฆฌํฐ์ปฌ
else
return damage
end
end
print(CalculateDamage(3, 7, 0.5))
9. ํ ์ด๋ธ (Table)
: ์ ์ผํ ์๋ฃํ์ผ๋ก, ๋ฐฐ์ด๊ณผ ๋์ ๋๋ฆฌ์ ์ญํ ์ ๋์์ ํ ์ ์๋ค.
* ํ ์ด๋ธ ์์ฑ๋ฒ
local tableName = {} -- ๋น ํ
์ด๋ธ ์์ฑ
* ์ซ์๋ฅผ ํค๋ก ์ฌ์ฉํ๋ ํ ์ด๋ธ
local studentNames = {"๊น๋ฏผ์ฌ", "์ด์ข
ํ", "์ด์ฌ์ฐ"}
print(studentNames[1]) -- ๊น๋ฏผ์ฌ ์ถ๋ ฅ
* ๋ฌธ์๋ฅผ ํค๋ก ์ฌ์ฉํ๋ ํ ์ด๋ธ
local hero = {name = "๊ด์ฐ", age = 40, attack = 99}
print(hero.name) -- ๊ด์ฐ ์ถ๋ ฅ
* ํ ์ด๋ธ ์์ ํ ์ด๋ธ์ ๋ฃ๊ธฐ
local character = {
name = "ํ๊ธธ๋",
stats = {attack = 10, hp = 100},
items = {"๊ฒ", "๋ฐฉํจ", "ํฌ์
"}
}
print(character.stats.attack) -- 10 ์ถ๋ ฅ
print(character.items[1]) -- ๊ฒ ์ถ๋ ฅ
10. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
1) ๋ฉํํ ์ด๋ธ์ ์ฌ์ฉํ ํด๋์ค์ ๊ฐ์ฒด ์์ฑ
local charClass = {
name = "",
job = "",
level = 1,
stats = {attack = 0, defense = 0, HP = 0, MP = 0}
}
function charClass:Shout()
print(self.name .. "๋์ด ์ธ์นฉ๋๋ค!")
end
function charClass:Create()
local newObj = {}
setmetatable(newObj, self)
self.__index = self
return newObj
end
local hero = charClass:Create()
hero.name = "๊ธธ๋"
hero:Shout() -- ๊ธธ๋๋์ด ์ธ์นฉ๋๋ค!
function charClass:LevelUp()
self.level = self.level + 1
self.stats.attack = self.stats.attack + 5
self.stats.HP = self.stats.HP + 10
print(self.name .. "๋์ด ๋ ๋ฒจ์
ํ์ต๋๋ค! ์๋ก์ด ๋ ๋ฒจ: " .. self.level)
end
hero:LevelUp() -- ํ๊ธธ๋๋์ด ๋ ๋ฒจ์
ํ์ต๋๋ค!
function charClass:EquipItem(item)
self.items.weapon = item
print(self.name .. "๋์ด " .. item .. "์(๋ฅผ) ์ฅ์ฐฉํ์ต๋๋ค.")
end
hero:EquipItem("๋จ๊ฒ") -- ํ๊ธธ๋๋์ด ๋จ๊ฒ์ ์ฅ์ฐฉํ์ต๋๋ค.