1

Lua と Love2d を使用してゲームを作成していますが、ネストされたテーブルを扱うときに問題が発生しました。

壁、ボタンなどに対応する数字を含むテーブルを実行し、キーに基づいて色付きのブロックを印刷する機能があります。これらのテーブルの 1 つの例は、次のようになります。

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: 0x106c5a720
1   1
2   1
3   1
4   1
5   1
6   1
7   1
8   1
9   1

手動で作成されたテーブルの最初のネストされたテーブルの読み取り:

1   table: 0x106c64120
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
4

1 に答える 1