繁体   English   中英

在真正的大矩形内保存一组坐标的最佳数据结构?

[英]Best data structure to hold a group of coordinates inside a really big rectangle?

我有一个地图的抽象表示,可以说在X和Y坐标上有5.000.000个不同的整数坐标,所以它是一个非常大的2d矩形。

然后,在该可变大小的矩形内,我有几个对象(字符,怪物,npc)。 玩家可以选择该矩形的位置,我必须检查该位置上是否有怪物或角色。

到目前为止,我创建了一个名为GameMatrix的自定义类,该类具有列和行,并且所说的列具有3000x2000位置(角色的区域视图)。

当我的游戏玩家点击所述坐标时,我必须对矩阵内的每个元素进行一次foreach() ,并且大多数情况下它为空。

有没有更好的方法来解决这个问题? 具体来说,我在问什么是最好的方法,即拥有一个非常大的矩形和一个坐标,以一种有效的方式检查在所述坐标内是否有对象。

忘了提一下,但这是在服务器端每毫秒完成几次的。 所以我需要很多表现。

编辑:忘了提,我正在使用C#。

您应该使用四叉树实现,除非网格中的项目数确实很少(例如几十个项目),在这种情况下,线性搜索(同时用力检查所有项目)可能是最好的选择。

看这里

http://en.wikipedia.org/wiki/Quadtree

请注意,可以快速高效地查询四叉树,但更新的成本更高,也就是说,如果您的项目在地图上移动很多,则要获得良好的性能就变得更加复杂。

我建议先尝试最简单的解决方案,然后再担心优化。

尝试使用数组。 随时随地改善您的解决方案。 列表或哈希图可能也很有趣,具体取决于您的设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM