팰월드 모드 제작법12

루아 베이직

Featured image

루아 베이직


기본 구문과 데이터 유형


LUA는 가벼우면서 배우기 쉬운 프로그래밍 언어입니다. 이 섹션에서는 LUA 스크립트의 기본 구조와 사용 가능한 다양한 데이터 유형 및 그들을 조작하는 방법에 대해 다루겠습니다.

스크립트 구조


LUA 스크립트는 .lua 파일 확장자를 가진 일반 텍스트 파일입니다. 스크립트는 위에서 아래로 실행되며, 문장, 주석 및 함수의 조합을 포함할 수 있습니다.

문장


문장(Statements)은 변수에 값 할당 또는 함수 호출과 같이 특정 작업을 수행하는 명령입니다. 다음은 “greeting” 변수에 “hello” 값을 할당하는 문장입니다:

greeting = "hello"

주석


주석은 코드에 노트 또는 설명을 추가하며 해석기에 의해 무시됩니다. LUA에서는 이중 대시(--)를 사용하여 주석을 작성합니다.

-- This is a comment and will be ignored by the interpreter
greeting = "hello"
    -- Function to check pal's health
    function checkPalHealth()
        -- Get pal using getPal function
        local pal = getPal("anubis")
        -- Return pal's health
        return pal.health
    end

함수


함수는 특정 작업을 수행하는 코드 블록으로, 스크립트 전체에서 재사용할 수 있습니다. 함수는 function 키워드를 사용하여 정의되며, 이름 뒤에 괄호 ()를 사용하여 호출됩니다.

-- This is a function that prints a greeting message
function sayHello()
    print("Hello!")
end

-- This is how the function is called
sayHello()

데이터 유형


LUA는 다음과 같은 여러 데이터 유형을 지원합니다:

숫자

숫자는 숫자 값을 나타내는 데 사용되며 정수 또는 부동 소수점 수일 수 있습니다. 정수는 소수점 없이 정수 값으로 표현되고, 부동 소수점 수는 소수점이 있는 숫자 값으로 표현됩니다.

-- This is a number
age = 25

-- This is also a number, but with a decimal point
price = 9.99

문자열

문자열은 텍스트를 나타내는 데 사용되며, 큰따옴표(“ “)나 작은따옴표(‘ ‘)로 둘러싸여 있습니다.

-- This is a string
name = "John"

-- This is also a string
address = '123 Main St'

불리언

불리언(Boolean)은 참(True) 또는 거짓(False) 값을 나타내는 데 사용됩니다. 이 값들은 주로 조건문에서 사용되며, 프로그램의 흐름을 제어하는 데 중요한 역할을 합니다.

-- This is a boolean
isValid = true

-- This is also a boolean
isCompleted = false

테이블과 메타테이블

테이블은 값의 컬렉션을 저장하는 데 사용되며, 배열 또는 사전(Dictionary)으로 사용할 수 있습니다. 배열로 사용될 때는 순서가 있는 값들의 모음으로 동작하며, 사전으로 사용될 때는 키-값 쌍의 집합으로 동작합니다. 테이블은 다양한 유형의 데이터를 포함할 수 있으며, 동적으로 크기가 조정될 수 있습니다. 이는 LUA에서 가장 강력하고 유연한 데이터 구조 중 하나입니다.

메타테이블(Metatables)은 LUA에서 고급 기능을 제공하는 기능 중 하나입니다. 메타테이블을 사용하면 테이블의 특정 동작을 변경하거나 사용자 지정할 수 있습니다. 예를 들어, 특정 테이블에 대한 색인(indexing)이나 산술 연산을 사용자가 정의한 방식으로 재정의할 수 있습니다. 이를 통해 객체지향 프로그래밍의 개념을 구현하거나 특정 동작을 커스터마이징할 수 있습니다.

-- This is a table
myTable = {1, 2, 3}

-- This is also a table, but with named keys
myDictionary = {name = "John", age = 25}

데이터 조작

LUA는 데이터를 조작하기 위한 여러 내장 함수와 연산자를 제공합니다. 이러한 함수와 연산자는 데이터를 조작하고 처리하는 데 사용됩니다.

-- Concatenating strings
greeting = "Hello, " .. "world!"

-- Performing mathematical operations
sum = 2 + 2
difference = 10 - 5
product = 2 * 3
quotient = 10 / 2

이것은 LUA의 기본 구문과 데이터 유형에 대한 소개일 뿐입니다. 제어 구조, 라이브러리 및 모듈, 객체 지향 프로그래밍(OOP) 등 더 많은 학습 및 탐구할 것이 있습니다.

WARNING
제공된 코드 조각은 실행되지 않을 것이며 예제와 참고 자료로 사용하기 위한 것입니다.

변수와 함수


LUA에서 변수는 데이터를 저장하고 조작하는 데 사용되며, 함수는 코드를 구성하고 재사용하는 데 사용됩니다.

변수

LUA에서 변수는 local키워드를 사용하여 선언하거나 사용하지 않고 선언할 수 있습니다.

-- Declaring a variable
local x = 5

-- Declaring a variable without the `local` keyword
y = 10

변수를 선언할 때는 local 키워드를 사용하는 것이 권장됩니다. 이렇게 함으로써 변수의 범위가 현재 함수나 파일로 제한되며, 실수로 전역 변수를 할당하는 것을 방지할 수 있습니다.

LUA는 여러 데이터 유형을 지원합니다. 숫자, 문자열, 부울 값, 그리고 테이블 등이 있습니다.

-- Declaring a number variable
local age = 25

-- Declaring a string variable
local name = "John"

-- Declaring a boolean variable
local isValid = true

-- Declaring a table variable
local myTable = {1, 2, 3}

함수

LUA에서 함수는 function 키워드를 사용하여 선언하고, 함수 이름 뒤에 괄호를 붙여 호출할 수 있습니다.

-- Declaring a function
function sayHello()
    print("Hello!")
end

-- Calling a function
sayHello()

함수는 매개변수를 받아들일 수 있으며 값을 반환할 수도 있습니다.

-- Declaring a function with parameters
function add(x, y)
    return x + y
end

-- Calling a function with arguments
result = add(5, 10)

함수는 변수에 저장되어 다른 함수에 매개변수로 전달될 수도 있습니다.

-- Storing a function in a variable
local myFunction = function()
    print("Hello!")
end

-- Passing a function as an argument
otherFunction(myFunction)

이것은 LUA에서 변수와 함수에 대한 작은 소개에 불과합니다. 클로저, 재귀 등 더 많은 것을 배우고 탐험할 수 있습니다.

흐름제어


LUA에서는 if, else, elseif, for, while, repeat 문 등을 사용하여 스크립트의 실행 흐름을 제어합니다.

If-else 조건문

if 문은 특정 조건이 참인지 확인하고, 조건이 참이면 코드 블록을 실행합니다. else 문은 조건이 거짓인 경우 대체 실행 경로를 제공합니다.

-- If-else statement
local x = 5
if x > 10 then
    print("x is greater than 10")
else
    print("x is less than or equal to 10")
end`

Elseif 조건문

elseif 문은 여러 조건을 확인하는 데 사용됩니다. 첫 번째 조건이 참이 아닌 경우 스크립트는 다음 조건을 확인하고, 이러한 과정을 반복하여 참인 조건이나 스크립트의 끝에 도달할 때까지 계속됩니다.

-- Elseif statement
local x = 5
if x > 10 then
    print("x is greater than 10")
elseif x < 0 then
    print("x is less than 0")
else
    print("x is between 0 and 10")
end`

For 루프

for 루프는 숫자의 범위나 배열 또는 테이블의 요소를 반복하는 데 사용됩니다. 루프 변수는 루프 전에 선언되고 초기화되며, 루프는 종료 조건이 충족될 때까지 계속됩니다.

-- For loop
for i = 1, 10 do
    print(i)
end`

While 루프

while 루프는 특정 조건이 참인 경우 지정된 코드 블록을 반복적으로 실행하는 데 사용됩니다.

-- While loop
local x = 5
while x > 0 do
    print(x)
    x = x - 1
end

Repeat Until

repeat 문은 특정 조건이 충족될 때까지 지정된 코드 블록을 반복적으로 실행하는 데 사용됩니다. 조건이 확인되기 전에 코드 블록이 적어도 한 번은 실행됩니다.

-- Repeat until
local x = 5
repeat
    x = x - 1
    print(x)
until x == 0

위의 코드 조각은 x가 0이 될 때까지 루프를 실행하고, 각 반복에서 x의 값이 감소합니다.