コネクタでつながった建物を長方形のグリッドに配置するゲームに取り組んでいます。何も重ねることはできません。建物とコネクタは、グリッド上にあると変更できません。それらはいつでも破壊できます。グリッドは、左下隅が (0,0) になるように定義されます。
建物は長方形で、各辺の長さは 1 ~ 4 ユニットです。5x5 の正方形もあります。
コネクタには始点と終点があります。それらはオーバーラップできず、幅は 1 単位です。それらは直線編集:(左、右、上、下) に進み、どこでも 90 度曲げることができます。無制限の長さ。
グリッドは理想的にはかなり大きい (200x200 以上) ですが、これは、これらのオブジェクトとコネクタが何千もある可能性があることを意味します。
オブジェクトが構築されたら、何かとオーバーラップしているかどうかを確認する必要があります。ビットのグリッドを作成すると、そのサイズは 300x300 を超えて非常に大きくなります。すべてのオブジェクトのリストを作成すると、ある程度の範囲内で検索できますが、コネクタをどのように処理しますか?
ビットの 2 次元配列は不可能なので、すべての建物にインデックスを付け、x 座標で並べ替え、次に y 座標で並べ替える必要があります。コネクタを直線的に検索することもできますが、それは非常に面倒で面倒です。
誰か提案がありますか?PS私はC ++でこれをやっています