기본 콘텐츠로 건너뛰기

튜터리얼 3.3. 테이블


테이블(table) 여러 정보를 하나의 변수에 저장하는 방법이다. 대부분의 PICO-8 게임은 테이블을 사용하게 되어 있어서 작동법을 알아두는 것이 좋다.
어떤 정보나 (value) 테이블에 추가할 그것은 어떤 이름 혹은 키값(key) 숫자와 쌍을 이룬다. 키값은 테이블에서 해당 정보를 다시 부를 이용한다. " 테이블에 키값으로 저장한 정보를 찾아라." 라는 식으로 말이다. 키값은 책의 색인과 같다.
키값을 정하지 않고 테이블에 값을 추가하면 자동적으로 숫자가 키값으로 배정된다. 예를 들어 살펴보자.



이제 코드에서는 어떻게 보이는지 살펴보자. 아래 예에서 보듯이 player 테이블을 만들 비어있는 중괄호를 이용한다. 다음 지정된 키값으로 값을 추가한다. 다른 예인 item 테이블은 중괄호 안에 값을 추가했지만 키값을 지정하지 않았다. 이때 키값으로 숫자를 자동으로 지정한다.

player={}
player.x=112
player.y=73
player.alive=true 

Item={"sword","cloak","boots"}

이런 방식으로 테이블에 값을 넣는다. 그렇다면 값을 다시 찾아오려면 어떻게 할까? 키이름이 지정된 키캆은 그냥 table.key처럼 사용하면 된다. 가령, player.x player.alive처럼 말이다. 하지만 숫자로 키값이 되어 있는 경우는 대괄호 안에 키값에 해당하는 숫자를 넣어서 사용한다. 예를 들어, items[1]이나 items[3]처럼 말이다.
만일 키값으로 숫자를 사용한다면 테이블 안에 얼마나 많은 값이 저장됐는지를 #items처럼 번호 기호(#) 이용하여 확인할 있다. 위의 item 테이블 예에서는 3이라는 답을 것이다. 기능은 테이블 안의 모든 값에 대해 루프를 하면서 개별 값에 어떤 작업을 해야 유용하다. 아래 예를 살펴보자.

for i=1,#items do
 print(item[i])
end

경우 i 1에서 시작해서 #items(,3)까지 작업을 한다. 매번 해당 값으로 items[i] 출력한다. I값이 1부터 3까지 진행하면서 해당 키값에 해당하는 아이템이 모두  출력된다.

댓글

이 블로그의 인기 게시물

PICO-8 그리고 레트로 게임

이 블로그는 게인적으로 좋아하는 판타지 콘솔 PICO-8을 소개하기 위해 만들었습니다. 더불어 레트로 게임들과 그와 관련된 주변 문화에 대한 개인적인 의견과 기록을 남기는 일기장으로도 써볼까 합니다. 편하게 봐 주시기 바랍니다.

튜터리얼 3.4. 게임 루프

PICO-8 은 게임 루프(the game loop)를 만들기 위해 세 개의 특별한 함수를 사용한다 . _ init() 함수는 한 번 작동한다 . 그 후 게임이 끝날 때까지 _ update() 와 _ draw() 함수가 반복해서 작동한다 . 아래는 PICO-8 의 기본 구조이다 . -- 뒤는 주석으로 각 함수가 어떤 작업을 하는지 설명한다 . function _init()   -- 게임이 시작하면   -- 이 부분의 코드가 한 번 작동한다 . end function _update()   -- 매 초마다   -- 이 부분의 코드가 30 번 작동한다 end function _draw()   -- 이 부분의 코드도   -- 매 초마다 30 번 작동한다   -- 하지만 _update() 함수가 작동하고 난 다음에 작동한다 end 여러분의 모든 코드를 이 세 함수 안에 넣을 수 있지만 실제로는 그렇게 하는 건 좋은 방법이 아니다 . 더 좋은 방법은 특정 작업을 하는 다른 함수를 만들고 _init(), _update(), _draw() 함수가 그 함수들을 작동시키는 것이다 . 예를 들어 , 플레이어의 동작 코드를 _update() 에 넣는 대신 move_player() 라는 함수를 만들어서 그것을 _ update() 안에서 동작케 하는 것이다 . 아래 그 예를 살펴보자 .   f unction _init()   make_player() end function _update()   move_player() end f unction _draw()   cls() -- 스크린 지우...