2013-11-24 64 views
0

我正在將一款遊戲作爲一個課程項目進行研究,並且建議我使用Graph ADT來表示世界地圖上的一組領土,以便每個頂點都是一個領土,邊緣代表相鄰領域,玩家可以在兩者之間移動。我發現了Graph ADT(JGraphT)的一個很好的Java庫,但是我完全不知道邊緣應該是什麼類型...此圖ADT中的邊緣類型應該是什麼?

例如,Graph<V,E>接口清楚地要求我爲頂點定義一個對象類型我認爲使用我的Territory類型非常有意義),但邊緣應該是什麼?我想不出任何有意義的對象類型作爲邊緣。

回答

1

嗯,比如說:

(1)

public class Border { 
    // ... put here anything that's useful 
    // e.g. length of border or type of border (land,sea,river) 
} 

的邊緣實際上是兩個地區之間的邊界 。

因此,對我來說,它是有意義的 邊緣是類邊界。

另一個想法:

(2)

public class Distance { 
    // ... put here anything that's useful 
    // e.g. the distance between the two capitals 
} 

我通常代表在我的頭上的圖形彷彿 頂點是首都,並且邊緣說 首都之間的道路(我指的是任何兩個接壤的 州/地區)。

+0

這是一個有趣的想法,但我想知道是否真的有必要爲邊緣定義類型?我的意思是......一個「邊框」是整齊的,但在我的遊戲中這樣一個班級沒有任何用處。 – agent154

+1

我不知道你的要求。但例如明天他們可能會要求你報告邊界的長度或其他內容,那麼這個長度將是邊界的一個字段。如果你不需要像我建議的邊框那樣的特殊類,那麼只需使用Integer或者Boolean :)你可以看到,這一切都取決於你的實際需求。 –

+0

我用另一個想法更新了我的答案。但這一切都取決於您的要求(以及您選擇使用的圖書館的要求)。 –

1

如果您需要邊框權重(對於距離等),jgrapht庫包含一個稱爲DefaultWeightedEdge的邊緣類型。否則,您可能只使用DefaultEdge類。

這是一個更實際的答案,即這些是jgrapht中的實際類,它適合您的目的。如果你正在尋找一個更概念化的答案,我認爲peter.petrov關於Border類的答案是非常有用的。

相關問題