Lua Script 1. 기초 문법

Preview:

DESCRIPTION

Lua Script 1. 기초 문법. Lua 5.1.2 버전 작성일 2007.07.16 참고서적 – Programing Game AI by Example 작성자 : 10thP 김성재. 시작하기 앞서. 정품이 필요하시다면 알아서 구하시길. 설치. 시작하기 앞서. 좌측 버튼을 눌러 yohani_1155114543_wowlua.stx (WOW 의 lua 스크립트 하이라이팅 출처 : wow.somegate.com ) 추가한 후 확인을 하면 에디트 플러스에서 Lua 스크립트 하이라이팅이 적용된다. - PowerPoint PPT Presentation

Citation preview

Lua 5.1.2 버전작성일 2007.07.16

참고서적 – Programing Game AI by Example작성자 : 10thP 김성재

1

설치

2

정품이 필요하시다면 알아서 구하시길 ..

좌측 버튼을 눌러

yohani_1155114543_wowlua.stx(WOW 의 lua 스크립트 하이라이팅출처 : wow.somegate.com )추가한 후 확인을 하면

에디트 플러스에서Lua 스크립트 하이라이팅이 적용된다 .

3

Edit Plus 나 메모장 등의 편집기를 이용해작성한 후 위와 같이 “ LuaConsole.exe” 를 실행해위와 같은 방식으로 스크립트 파일을 읽는다 .

<> 가 아니고 () 괄호 입니다 . (“rps.lua”) 이게 맞습니다 .지금부터 할 예제들을 하나씩 실행해보면서 익혀봅시다 . 꼭 !

4

한줄 주석 : --

여러줄 주석 : --[[ 시작 ~ 끝 ]] 여러줄 주석내에 여러줄 주석이 있으면Error 가 나므로 주의 할것 .

5

명령어 끝에 ; 은 붙여도 되고안 붙여도 된다 .

6

루아는 기본적으로 자료형에 구애 받지 않는다 .

다만 Cpp 에서 사용할때 , 명시적인 변환이 요구 되기 때문에 알아두어야 한다 .

루아에는 쓰레드 자료형도 있지만 사용해 본 적이 없어서 건너 뛰겠다 .

7

nil         - 그냥 NULL 이다 . 변수 초기화 안하면 , 이걸로 세팅 된다 .

number  - 내부적으로 double 이다 . Cpp 에서 사용할때 형변환 잘 해야한다 .

boollean - false 아니면 true. (0 아니면 1)

8

string    - 8bit 의 문자열 배열이다 . 연결 연산자 '..' 를 사용해서 문자들을

연결가능하다 . ‘..' 은 연결하려는 자료가 문자가 아니면

문자로 변환시킨다 .          ex)  age = 25                 print(" 내나이는 "..age.." 랍니다 ")

function - 루아에선 함수도 자료형이다 . 그래서 변수에도 저장 될 수 있다 .

9

함수 정의에는 두가지 방식이 있다 .

Add = function(a, b)return a+b

end

Function Add(a,b)return a+b

end

Add 라는 이름의 함수인자값 a, b 를 합해서return 해주고 있다 .

Ex)

10

return 값이 여러 개인 함수는위와 같이

return 값을 받아 사용한다 .

11

Table – 배열과 비슷하게 쓰인다 .             index 를 문자 , 문장 , 숫자들을

사용 할 수 있다 .

시작 index 는 0 이 아닌 , 1 이다 .

12

Table 생성test_table = {}

test_table[1] = 4;test_table[2] = 1.2;test_table[3] = " 문장도 되요 ";

또는

test_table = {1, 1.2, " 문장도 되요 "}; 위와 같이 동일한 index 1, 2, 3 으로 사용됨

13

AssociateTable = {} -- 테이블 생성

AssociateTable[“one”] = 1; AssociateTable[“two”] = “ 둘” ;

Index 1 은 자동적으로 처음에 입력한 값을 가르키는 것이 아니다 .14

. 위는 Table 정의시 가장 안전한 방법인 , 한줄씩 정의하기 이다 .

. 이것을 기준으로 Table 정의시 에러를 몇 가지 살펴보자 .

Table1.lua

15

. 한줄씩 Table 을 정의할때는 한글을 써도 문제가 없지만 , 한번에 정의하는 방식에서 한글을 쓰면 저렇게 문제가 발생한다 .

TableError1.lua

16

. 한번에 정의하는 방식을 나중에 하면 , 이전에 정의했던 값들은 사라져버린다 . 위에서 “ 숫자” 부분이 빨간 사각형 위에 써있었다면 숫자가 나올부분도 nil 값이 나왔을 것이다 .

TableError2.lua

17

lookup={}; -- Table 생성

             lookup["rock"] = {}             lookup["rock"]["rock"]         = "draw"             lookup["rock"]["paper"]      = "lose"             lookup["rock"]["scissors"]    = "win“

행 , 열 의 순서로 작성 되었다 .(1 행 Rock 부분만 설정하고 있음 )

다음과 같은 형태의 Associate Table 도 가능하다

18

아래와 같은 값 설정 방식도 가능하다 lookup = {} --Table 생성                lookup["rock"]        = {rock = "draw", paper = "lose", scissors = "win"}                lookup["paper"]      = {rock = "win" , paper = "draw", scissors = "lose"}                lookup["scissors"]   = {rock = "lose", paper = "win" , scissors = "draw"}

19

위의 두개의 print 문중 아무 방식으로Table 에 접근해도 상관 없다 .

20

Associate Table 로 함수를 가르키고 호출도 가능하다 . 또 직접적으로 함수를 정의해줄 수 있다 .

21

같음 == 같지 않음 ~= 크고 , 작고 , 같거나 작음 ,

같거나 큼 등은 (C 와 동일함 )

C / Lua ! -> not && -> and || -> or

22

if 이후에는 항상 then 을 잊지 말것 else if 가 아니고 elseif 임을 잊지 말것 시작은 if 로 끝맺음은 end 임 . 같지 않음은 != 이 아닌 ~= 임

23

위 표현식은 에러를 유발함 유의하기 바람

이와 같이 사용해야 올바른 실행이 보장됨24

설명이 필요 없으리라 생각한다 . break 로 구문을 빠져나갈수 있다 .

25

설명이 필요 없으리라 생각한다 . break 로 구문을 빠져나갈수 있다 .

26

초기 값 , 종료 값 , 증가 값 순이다 . 따로 변수를 선언해줄 필요 없다 . break 로 구문을 빠져나갈수 있다 .

27

반복문 모두 위와 같은 실수형을 허용한다 .

28

아래 Random 값을 발생 시키는 아래 문장을참조하여 , 가위 바위 보를 만들어 보자 .

관계테이블 (Associate Table) 및 함수등을 이용해서연습 해보는 것이 좋을 것이다 .( 책에서 제공하는 소스를 첨부합니다 .)

29

기획자 분들은 여기까지만 하셔도 좋습니다 .

Class 를 사용할 줄 아신다면 , 다음에 올릴ppt 에 ” (3).Script 에서 Class 정의하기”부분을 살펴보시기 바랍니다 .

수고하셧습니다 ^^ - 07 년 10 월 27 일 마침 .

30

Recommended