2

私はゲームのような単純なグリッドを作成しています (グリッドはマトリックス 128x128 です)。マトリックスは 0 と 1 で満たされています (1 つの弾丸は通過でき、0 の弾丸は通過できず、これ以上移動し続けることはできません。また、弾丸の範囲は 32 セルです)。たとえば、私は位置 (32,89) に立っています。すべての撮影可能なフィールドを計算するための効率的なアルゴリズムを誰かに提案できますか? (範囲内のすべてのフィールドを簡単にチェックして簡単な方法で計算することは知っていますが、もっと良いアイデアがあるのだろうか)

4

2 に答える 2

2

より効率的なアルゴリズムがあります。Eric Lippert は、グリッド ゲームでのシャドウ キャスティングに関する優れたシリーズを執筆しています。私が正しく理解していれば、これはまさにあなたが必要としているものです。

于 2012-06-23T11:26:28.550 に答える
2

残念ながら、これ以上良い方法はありません。

撮影するポイントがリスト内のどこにあるかがあれば可能です。この場合、リストから他の要素を削除することで、いくつかのチェックを削除できます。

グリッドが変わらない場合は、後で使用するために保存して、すべての位置について評価できます。これは、約 4MB の 128*128*(2pi*range) メモリを使用します。その場合、考えられるすべての角度に対して保存でき、最大 2pi*range=202 位置になり、以前に必要だった 1024(32*32) の代わりに 202 のチェックを実行します。

于 2012-06-23T11:18:46.460 に答える