1

私は Java で 2D タイル ベースのゲームを作成していますが、世界にアイテムを格納する最良の方法は何かと考えていました。過去に、私は常に世界と同じサイズの配列を使用していましたが、本当に大きな世界を作りたいと思っていました.事実、これは悪い考えです. それで、私はちょうど最善の方法が何であるか疑問に思っていましたか?

4

2 に答える 2

1

intなどでタイルのタイプを定義する場合、その1 ビットを使用してアイテムがあるかどうかを示すことができます。x 座標で並べ替えられた List に格納する項目自体 (x 座標が同じ場合は、y 座標を 2 番目の順序付けプロパティとして使用します)。

このようにして、タイルにアイテムがあるかどうかを非常に高速に検出できます ( O(1) 、アイテムがある場合にのみ検索しList<Item>ます。リストでは、バイナリ検索を使用できます (最初に x 座標に関連し、同じ x 座標を持つすべてのアイテムのサブリスト内で、必要な y 座標のバイナリ検索を使用します) O(log(n)) [n = アイテムの数]。

メモリを節約したい場合は、要素データ型を使用してタイルを指定し (例: an int)、世界をたとえば an に格納することを検討しますint[][]

于 2013-03-09T10:44:17.933 に答える
0

アイテムのリストとその (x,y) 座標は、非常に巨大な世界でもうまく機能するはずです。

于 2013-03-09T10:12:17.033 に答える