테이블(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까지 진행하면서 해당 키값에 해당하는 각 아이템이 모두 출력된다.

댓글
댓글 쓰기