320 likes | 631 Views
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 ) 추가한 후 확인을 하면 에디트 플러스에서
E N D
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스크립트 하이라이팅이 적용된다.
실행 방법(LuaConsole이용) • Edit Plus나 메모장 등의 편집기를 이용해작성한 후 위와 같이 “LuaConsole.exe”를 실행해위와 같은 방식으로 스크립트 파일을 읽는다. <>가 아니고 () 괄호 입니다. (“rps.lua”) 이게 맞습니다. 지금부터 할 예제들을 하나씩 실행해보면서 익혀봅시다. 꼭!
기초 - 0. 주석 • 한줄 주석 : -- • 여러줄 주석 : --[[ 시작 ~ 끝 ]]여러줄주석내에여러줄 주석이 있으면Error가 나므로 주의 할것.
기초 – 세미 콜론( ; ) • 명령어 끝에 ; 은 붙여도 되고안 붙여도 된다.
기초 – 1. 자료형 • 루아는 기본적으로 자료형에구애 받지 않는다. • 다만 Cpp에서 사용할때, 명시적인 변환이 요구 되기 때문에 알아두어야 한다. • 루아에는쓰레드자료형도 있지만 사용해 본 적이 없어서 건너 뛰겠다.
기초 – 1. 자료형의 종류 • nil - 그냥 NULL 이다. 변수 초기화 안하면, 이걸로세팅 된다. • number - 내부적으로 double이다.Cpp에서 사용할때 형변환 잘 해야한다. • boollean - false아니면 true. (0 아니면 1)
기초 – 1. 자료형의 종류 • string - 8bit의 문자열 배열이다. 연결 연산자 '..'를 사용해서 문자들을 연결가능하다. ‘..'은 연결하려는 자료가 문자가 아니면 문자로 변환시킨다. ex) age = 25 print("내나이는"..age.."랍니다") • function - 루아에선 함수도 자료형이다.그래서 변수에도 저장 될 수 있다.
기초 – 1. 자료형의 종류(함수) • 함수 정의에는 두가지 방식이 있다. • Add = function(a, b) return a+bend • Function Add(a,b) return a+bend Add 라는 이름의 함수 인자값a, b를 합해서 return 해주고 있다. Ex)
Return 값이 여러개인 함수 return 값이 여러 개인 함수는 위와 같이 return 값을 받아 사용한다.
기초 – 1. 자료형의 종류 • Table– 배열과 비슷하게 쓰인다. index를 문자, 문장, 숫자들을 사용 할 수 있다.시작 index는 0이 아닌,1 이다.
기초 – 1. Lua Table • Table 생성test_table = {} test_table[1] = 4;test_table[2] = 1.2;test_table[3] = "문장도 되요";또는 test_table = {1, 1.2, "문장도 되요"}; 위와 같이 동일한 index 1, 2, 3으로 사용됨
기초 – 1. Associate Table • AssociateTable = {} -- 테이블 생성AssociateTable[“one”] = 1;AssociateTable[“two”] = “둘”; Index 1은 자동적으로 처음에 입력한 값을 가르키는 것이 아니다.
기초 – 1. Table 에러 Table1.lua .위는 Table 정의시가장 안전한 방법인, 한줄씩 정의하기 이다..이것을 기준으로 Table정의시 에러를 몇 가지 살펴보자.
기초 – 1. Table 에러 TableError1.lua .한줄씩Table을 정의할때는 한글을 써도 문제가 없지만,한번에 정의하는 방식에서 한글을 쓰면 저렇게 문제가 발생한다.
기초 – 1. Table 에러 TableError2.lua . 한번에 정의하는 방식을 나중에 하면, 이전에 정의했던 값들은사라져버린다.위에서 “숫자” 부분이 빨간 사각형 위에 써있었다면숫자가 나올부분도nil 값이 나왔을 것이다.
기초 – 1. Associate Table 다음과 같은 형태의 Associate Table도 가능하다 lookup={}; -- Table 생성 lookup["rock"] = {} lookup["rock"]["rock"] = "draw" lookup["rock"]["paper"] = "lose" lookup["rock"]["scissors"] = "win“ 행, 열 의 순서로 작성 되었다. (1행 Rock 부분만 설정하고 있음)
기초 – 1. Associate Table 아래와 같은 값 설정 방식도 가능하다 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"}
기초 – 1. Associate Table 사용 • 위의 두개의print문중 아무 방식으로 Table에 접근해도 상관 없다.
기초 – 1. Associate Table 사용 • Associate Table로 함수를 가르키고호출도 가능하다. 또 직접적으로 함수를 정의해줄 수 있다.
기초-2. 논리 연산자 • 같음 == • 같지 않음 ~= • 크고, 작고, 같거나 작음, 같거나 큼 등은 (C와 동일함) • C / Lua • ! -> not • && -> and • || -> or
기초-3. 조건문if • if 이후에는 항상 then을 잊지 말것 • else if 가 아니고 elseif 임을 잊지 말것 • 시작은 if로 끝맺음은 end 임. • 같지 않음은 != 이 아닌 ~=임
기초-3. 조건문if 위 표현식은 에러를 유발함 유의하기 바람 이와 같이 사용해야 올바른 실행이 보장됨
기초 – 4. 반복문(while) • 설명이 필요 없으리라 생각한다. • break로 구문을 빠져나갈수 있다.
기초 – 4. 반복문(repeat) • 설명이 필요 없으리라 생각한다. • break로 구문을 빠져나갈수 있다.
기초 – 4. 반복문(for) • 초기 값, 종료 값, 증가 값 순이다. • 따로 변수를 선언해줄 필요 없다. • break로 구문을 빠져나갈수 있다.
기초 – 4. 반복문(실수를 허용) • 반복문 모두 위와 같은 실수형을 허용한다.
기초 문법 끝내면서… • 아래 Random 값을 발생 시키는 아래 문장을참조하여, 가위 바위 보를 만들어 보자. • 관계테이블(Associate Table)및 함수등을 이용해서연습 해보는 것이 좋을 것이다.(책에서 제공하는 소스를 첨부합니다.)
기초 문법 끝내면서… • 기획자 분들은 여기까지만 하셔도 좋습니다. • Class를 사용할 줄 아신다면, 다음에 올릴ppt에 ”(3).Script에서 Class 정의하기”부분을 살펴보시기 바랍니다. • 수고하셧습니다^^ - 07년 10월 27일 마침.