【TIC-80】에리어 번호를 흔든 배열(테이블)로부터 경계선 첨부의 맵 데이터를 작성
TIC-80이라는 가상 게임기에서
data2map.lua
adata={
{0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,0,0,6,6,6,0},
{0,0,1,2,0,0,6,0,6,0},
{0,0,1,2,3,3,6,6,6,0},
{0,0,0,2,3,4,4,5,0,0},
{0,0,0,0,3,3,5,5,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
}
와 같이 에리어 번호를 2차원 배열(테이블)로
넣은 것에서
같은 맵 데이터를 만드는 것이 목적입니다.
(TIC-80이라고 쓰려고 좌절했습니다)
충족하고 싶은 요구는 다음과 같습니다.
예, 아마도 비슷한 일을 한 사람이있을 것입니다.
찾을 수 없습니다. 이 기사의 제목도 아마 적절하지 않습니다.
맵 칩이나 타일 등의 어구도 나중에 알았습니다.
결국 우여곡절 끝에 다음과 같은 방법으로 했습니다.
테두리 없음, 왼쪽과 테두리가 있고 위와 테두리가 있고 왼쪽과 위와 테두리가 있습니다.
스프라이트(맵 칩)를 바다와 지면 각각 준비하고 인덱스 #0부터 차례로 늘어놓는다.
후에는 자신의 에리어 번호가 0(바다)이라면 전반, 왼쪽과 에리어 번호가 다르면 1 시프트하고, 위라면 2,
양쪽이라면 더해 3 어긋난다고 했습니다. 코드는 다음과 같이
data2map.lua
S_ID=0
adata={
{0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,0,0,6,6,6,0},
{0,0,1,2,0,0,6,0,6,0},
{0,0,1,2,3,3,6,6,6,0},
{0,0,0,2,3,4,4,5,0,0},
{0,0,0,0,3,3,5,5,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
}
MAP_W=#adata[1]
MAP_H=#adata
for i=2,MAP_H do
for j=2,MAP_W do
local dSea=(adata[i][j]==0)and 0 or 4
local dLeft=(adata[i][j]==adata[i][j-1])and 0 or 1
local dUp=(adata[i][j]==adata[i-1][j])and 0 or 2
mset(j-1,i-1,S_ID+dSea+dLeft+dUp)
end
end
--sync(0,0,true)
function TIC()
map()
end
우선 맨 위와 맨 왼쪽은 0 고정으로.
또한 나중에 추가합니다. (첫 기사에서 지쳤습니다)
Reference
이 문제에 관하여(【TIC-80】에리어 번호를 흔든 배열(테이블)로부터 경계선 첨부의 맵 데이터를 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uokagi/items/4f3c003bcbcd1b2eeb3a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)