0

現在、いくつかのテストを行っていますが、このコードの何が問題になっているのかわかりません。何か考えはありますか?

function IATetris(Pieza,Rotacion,Array)
io.write("The table the script received has: ",Pieza,"\n")
RotacionInicial = Rotacion
PosInicial = 7
final = #Array --this gets the size of the array
i = 1

    for y = 1, 20 do --the array of my tetris board is 20 in x and 14 in y so it would be something like this Array2D[20][14]

    io.write(" First for y ",y,"\n")
    Array2D[y]={} --clearing the new array
    for x = 1,14 do
    io.write(" First for x ",x,"\n")
        if i == final then break end

        io.write(" First for i",i,"\n")
        Array2D[y][x] = Array[i] 
        i= i+1 --seems like you cant use i++ in lua
        end
   end
end

私がやっていることは、2つの整数と1つの配列を取得することです。プログラムが実際にどこに向かっているのかを確認するためにコンソールに書き込む必要があります。取得しているのは...

最初のログメッセージ:"The table the script received has: "

および2番目のログメッセージ:" First for y "

しかし、私はそれ以上のことはしていませんので、おそらくプログラムはそこでクラッシュしていますか?この関数は約20秒ごとに呼び出されています。なぜこれが起こっているのか私には本当にわかりません。どんな助けでも本当にありがたいです、ありがとう。

4

2 に答える 2

2

初期化されていない(またはテーブルではない)ように見えるArray2Dので、クラップスになりArray2D[y]={}ます。

pcall次のように、関数を呼び出してエラーをトラップするために使用できます。

local ok, msg = pcall(IATetris, pieza, rotacion, array)
if not ok then
    print("ERROR:", msg)
end

補足:local変数の範囲を制限するために、可能な限りキーワードを使用する必要があります。

于 2012-05-02T23:08:20.413 に答える
2

この行がログに記録される場合:

io.write(" First for y ",y,"\n")

この行はログに記録されません:

io.write(" First for x ",x,"\n")

次に、問題は次のいずれかの行にあります。

Array2D[y]={} --clearing the new array
for x = 1,14 do

for x...間違いなく私のために働くので、それがArray2Dラインであることをお勧めします。構文的に問題はないので、ランタイムエラーである必要があります。ランタイムエラーは、Luaまたはそれが組み込まれているアプリケーションによって報告される必要があります。そうではなく、関数が単に「停止」する場合は、ブラインドでデバッグしていることになり、このような問題に多くの時間を浪費することになります。

その行で発生する可能性があると私が考えることができる唯一のエラーArray2Dは、がテーブルでない場合です。インデックスを作成しようとしているので、インデックスを作成する必要があります。Array2D関数で宣言されていない場合、他の場所ですでに定義されているグローバル変数であれば問題ありません。ただし、この関数専用のローカル変数を意図している場合は、それに追加する必要がありlocal Array2D = {}ます。

Array2D何であるか、または実際のエラーが何であるかを知らなければ、より正確な答えを出すことは困難です。ロギングよりも問題を見つけるためのより良い方法が本当にない場合、これは、Array2D行の直前で、私の仮説をテストする必要があります。

io.write("Array2D is: ", type(Array2D), "\n")
于 2012-05-02T23:05:59.193 に答える