簡體   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