0

わかりましたので、迷路の周りでボールをナビゲートするボール傾斜ゲームを作成しています。ボールは機能し、このエリアでは問題ありませんが、迷路で問題が発生しています。

迷路は、1 と 0 を含む .txt ファイルを使用してプログラムで作成されます (1 は壁、0 は床です)。.txt ファイル全体を通過し、白 (壁) または黒 (床) を配置する for ループがあります。 ) をキャンバス上の適切な座標に配置します。これは、apps-for-android Amazed ゲームのリンクを見た場合に似ています。ただし、タイルに壁タイプの検出を配置する代わりに、ユーザーが「ボイド」タイルに転がった場合、ゲームをリセットしてライフポイントを差し引くだけです。

ただし、「ボイド」ではなく「壁」を探しています。ボールが壁に触れた場合、ボールはそのポイントを超えることはありませんが、別の軸に沿って自由に移動できます。もちろん、それが角を打たない限り。

私が抱えている問題は、実際にこの検出を作成することです。私は多くの方法を試しましたが、これまで成功したり有用なものはありませんでした.

私は試しました: - 壁タイルのすべての座標の ArrayList を用意し、すべてのゲームティックで、ボールが 1 つに触れているかどうかを確認します。ただし、これはゲームの速度を低下させ、非常にひどいものでした。- ボールがどのタイルにあるのかを確認し、壁のタイルにある場合は、軸で停止し、もう一方の軸で自由に移動できるようにします。壁タイルの右側だけでなく、その下にも移動できませんでした。これは、コードがボールの下にあることを検出したためです。

他にもいくつかの方法がありますが、本当に思い出せません!少し慌ただしいです。

それで、誰かがこの分野で何か経験があれば、正しい方向に私を押してくれませんか?火曜日までに迷路の壁を整理したいと思っていますが、見た目が悪いです!

さらに情報が必要な場合は、お問い合わせください。

すべての返信に事前に感謝します。

4

1 に答える 1

1

反復処理が必要な ArrayList を使用する代わりに、テキスト ファイルと同じ方法で迷路を保存してみませんか? truefalse用と床用、またはその逆で満たされた 2D ブール配列を使用します。

これにより、壁の検索が大幅に簡素化されます。あなたがしなければならないのは、ボールがグリッドのどこにあるかを把握することだけです。次に、すぐ周囲のセルを確認できます。対角線を含めたとしても (これはおそらくすべて 90 度の迷路には必要ありません)、これは配列から 8 つのブール値を基本的に瞬時にチェックすることと同じです。

軸の問題に関しては、その方向の動きを止めるだけです。軸全体をフリーズする必要はありません。たとえば、壁が目の前にある場合は、それ以上上がらないようxにします。左に壁がない限り、下げない理由はありません。

ただし、これはあくまでも一般的な考え方です。宿題なので、コードはありません ;)

編集:

2D 配列はまさにそれでありboolean[][]、壁にしたい各スポットに当てはまります。テキスト ファイルを読み込んだら、すぐに割り当てるだけです。

テキストのy各行が行に対応し、各 0/1 がxその列の であると仮定すると、 を読み取るときに を1割り当てmap[x][y] = trueます。

正直なところ、他に何を詳しく説明する必要があるのか​​ わかりません。ただし、単純なタイルベースのマップを行うのは一般的な形式です。「2d array tile map」をグーグルで検索すると、それに役立つリソースがいくつか見つかります。

于 2013-03-18T02:51:38.530 に答える