2013-04-13 2 views
1

루아와 러브 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 
+0

작동하지 않는 것이 더 구체적 일 수 있습니까? 오류가 있습니까? 그렇다면 어떤 종류의 오류입니까? 설명의 16 진수 비트에 관해서는 테이블의 메모리 주소 (아마도 ID 또는 해시)이므로 다른 두 테이블은 내용면에서 동일하지만 동일한 ID를 공유하지 않습니다. 그들이 실제로 동일하다는 것을보기 위해 ip 테이블을 가지고 두 테이블을 반복 해 보았는가? –

+0

아! 16 진수 문제를 해결해 주셔서 감사합니다! 그것은 그 수수께끼를 해결합니다. 오류까지는 아무 것도 얻지 못합니다. 게임이 실행되고 모든 것,지도가 렌더링되지 않습니다. 나는 당신이 그것을보고 싶다면 위의 렌더링 코드를 추가했다. "map [x] [y]"는 결코 "1"과 같지 않습니다. 필자는 "map [x] [y]"를 인쇄 해 보았고 반드시 "1"을 여러 번 사용했습니다. 또한 언급 한대로 테이블을 반복 할 때 여전히 동일하게 보입니다. – Refractix

+0

파일 읽기 루틴에 문제가 있다고 생각됩니다. 파일을 읽을 때 ASCII 문자와 같은 문자를 읽습니다. 따라서 요소를 테스트 할 때 요소는 ASCII 문자 1이므로 실제로는 1이 아닌 0x31과 같습니다. 각 읽기 문자에 tonumber()를 사용해보십시오. –

답변

2

텍스트 파일에서 데이터를 읽고, 당신은 문자열을 얻고있다 : 여기에 참조 할 수 있도록지도를 렌더링하는 코드의 비트입니다.
원래 map 테이블에 숫자가입니다.
숫자가 문자열과 같지 않습니다.

assert(1 ~= '1') 
+0

고마워요! 그것은 그것으로 밝혀졌습니다! W.B와 같은 결론에 도달했습니다. 위. – Refractix