루아와 러브 2d를 사용하여 게임을 작성하고 있지만 중첩 테이블을 다룰 때 걸린 부분이 있습니다.루아 테이블을 복제 할 때 불일치가 발생했습니다.
벽, 버튼 등과 같은 숫자가 들어있는 표를 통해 실행되는 기능이 있으며 키를 기준으로 컬러 블록을 인쇄합니다. 이 테이블 중 하나의 예는 다음과 같습니다.
map = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 }
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 }
{ 1, 0, 1, 1, 2, 0, 0, 0, 1 }
{ 1, 0, 0, 0, 0, 0, 0, 0, 1 }
{ 1, 1, 1, 1, 1, 1, 1, 1, 1 }
}
렌더링 할 때 제대로 작동합니다. 그러나 나는이처럼 보이는 텍스트 파일에서 데이터를 읽는 기능 사용이 동일한 테이블을 만들려고 할 때 그것은 동일 보인다 테이블을 생성
111111111
100000001
101120001
100000001
111111111
을하지만 난 때 단순히 작동하지 않습니다 그것을 렌더링합니다.
그래서 테이블 내용을 출력하는 코드를 사용하여 디버깅을 시도했지만 내용은 동일하지만 중첩 테이블을 설명하는 16 진수 비트가 다릅니다. 예 :
1 table: 0x106c64120
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
여기 무슨 일이야 : 수동으로 만든 테이블의 첫 번째 중첩 테이블 읽기
1 table: 0x106c5a720
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
:
최초의 중첩 된 맵 파일의 테이블을 읽기? 값은 모두 동일하지만 이상한 일이 일어나고 있습니다.
편집 :
for y=1, #map do
for x=1, #map[y] do
if map[y][x] == 1 then
print("found a wall")
love.graphics.rectangle("fill", x * 30, y * 30, 30, 30)
elseif map[y][x] == 2 then
print("found a button")
love.graphics.setColor(255, 0, 0)
love.graphics.rectangle("fill", x * 30, y * 30, 30, 30)
love.graphics.setColor(0, 0, 255)
end
end
end
작동하지 않는 것이 더 구체적 일 수 있습니까? 오류가 있습니까? 그렇다면 어떤 종류의 오류입니까? 설명의 16 진수 비트에 관해서는 테이블의 메모리 주소 (아마도 ID 또는 해시)이므로 다른 두 테이블은 내용면에서 동일하지만 동일한 ID를 공유하지 않습니다. 그들이 실제로 동일하다는 것을보기 위해 ip 테이블을 가지고 두 테이블을 반복 해 보았는가? –
아! 16 진수 문제를 해결해 주셔서 감사합니다! 그것은 그 수수께끼를 해결합니다. 오류까지는 아무 것도 얻지 못합니다. 게임이 실행되고 모든 것,지도가 렌더링되지 않습니다. 나는 당신이 그것을보고 싶다면 위의 렌더링 코드를 추가했다. "map [x] [y]"는 결코 "1"과 같지 않습니다. 필자는 "map [x] [y]"를 인쇄 해 보았고 반드시 "1"을 여러 번 사용했습니다. 또한 언급 한대로 테이블을 반복 할 때 여전히 동일하게 보입니다. – Refractix
파일 읽기 루틴에 문제가 있다고 생각됩니다. 파일을 읽을 때 ASCII 문자와 같은 문자를 읽습니다. 따라서 요소를 테스트 할 때 요소는 ASCII 문자 1이므로 실제로는 1이 아닌 0x31과 같습니다. 각 읽기 문자에 tonumber()를 사용해보십시오. –