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