0

私が取り組んでいるこのゲームには、新鮮な目が必要だと思います。

これはスライディング イメージ パズルです (画像を分割してランダムな順序で表示します。次に、パズルのピースを 1 つ削除します。ユーザーは各パズルのピースをクリックして移動し、画像を配置する必要があります。一緒に戻る)

完全なコードはこちら: https://github.com/Integralist/HTML5-Image-Slider-Game

私が抱えているバグは、移動した最初のパズルのピースにあります。もう一度クリックすると、元の位置に戻ると、パズルのピースが別のピースに変わります (あるインスタンスでは、ゲームを開始するために削除されたパズルのピースに変更されますが、それは単なる偶然かもしれません)。

最初は、問題は非同期の setInterval メソッドにあると考えていました (ループ内にいるため、参照ループの反復が台無しになっている可能性があると考えていましたが、現在、関連する反復を setInterval に渡し、問題は引き続き発生するため、そうではありません)。

更新:
問題は setInterval に関係していると思います。主な問題は、キャンバスに画像を描画し始めると、元の x/y 座標が明らかに期待したものから変更されていることです。同じパズルのピースをクリックして元の位置に戻すと、移動したいパズルのピースの座標を保持するオブジェクトが正しくないことに気付きました。 DrawOnCanvasX/Y プロパティに気付きました。それらが本来あるべきものと異なっており、それらが empty_space 変数の x/y 座標と一致するようになりましたか? これが常に発生するわけではないという事実は、 setInterval がループからインターバルで実行される関数に正しいオブジェクトを通過していないと思いますか?

どんな助けでも感謝します。

4

1 に答える 1

0

問題は、ランダム化された配列から特定のアイテムを削除していなかったためです。

ゲームを機能させるには、パズルのピースを1つ削除する必要がありました。これにより、他のピースに移動できるスペースを確保できます。問題は、必要clearRectなピースがあったのに、実際にはアレイから削除されなかったことです。したがって、正確なX / Y座標を持つアイテムを配列内で見つけるためにループしていたとき、削除する必要のあるパズルのピースアイテムを見つけていました(削除されるピースはランダムに選択されるため、そのために時々ピースは最初にループを介して検出され、それ以外の場合は正しいピースが検出されます)。

痛かったキリスト。

于 2012-04-27T19:21:21.907 に答える