2013-11-24 23 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类的答案是非常有用的。

相关问题