我正在开发一款游戏,您可以将通过连接器连接的建筑物放置在矩形网格上。没有什么可以重叠。建筑物和连接器一旦在网格上就不能改变;他们可以随时被摧毁。网格被定义为左下角为 (0,0)。
建筑物是矩形,每条边可以有 1 - 4 个单位长;还有一个5x5的正方形。
连接器具有起点和终点。它们不能重叠,并且是 1 个单位宽。他们可以直线编辑:(左,右,上和下)并在任何地方弯曲 90 度。无限长度。
理想情况下,网格应该很大(200x200 或更大),但这意味着可能有成千上万个这样的对象和连接器。
当一个对象被构建时,我需要检查它是否与任何东西重叠。如果我制作一个比特网格,它的大小将超过 300x300 大得令人望而却步。如果我列出所有对象,我可以在一定范围内搜索,但我将如何处理连接器?
看到二维位数组是不可能的,我必须索引所有建筑物,并按 x 坐标排序,然后按 y 坐标排序。我可以对连接器进行线性搜索,但这会非常乏味和痛苦。
有人有建议吗?PS我在C++中做这个