【问题标题】:How do I represent a game board using a graph?如何使用图表表示游戏板?
【发布时间】:2015-03-30 18:45:40
【问题描述】:

我提供了这个方法:

public void init(Logger logger, int playerID, int numWalls, Map<Integer, Coordinate> playerHomes){
    //The graph I want to use 
    HashMap<Coordinate, HashSet<Coordinate>> graph = new HashMap<Coordinate, HashSet<Coordinate>>();

init:将此方法视为您的构造函数(因此,您不应该有构造函数,因为它不会被调用)。引擎将在启动时调用此方法一次。在采取任何行动之前,您必须在此处构建和存储游戏的初始表示。

Logger, - 对记录器类的引用

playerId, - 此玩家的 id(1 到 4,对于四人游戏)

numWalls, - 该玩家拥有的墙数

playerHomes, - 其他玩家的位置(空坐标表示无效玩家;基于 1 的索引)

棋盘上的方格表示为Coordinate,具有行值和列值。

我只是对如何填充以图形表示的 9x9 游戏板感到困惑。我试图让每个坐标有 4 个邻居,除非它是角坐标或棋盘边缘的坐标。

但我希望我的键和值表示为

HashMap&lt;Coordinate, HashSet&lt;Coordinate&gt;

例如,位置(键)(0,0) 有邻居(值):[(0,1),(1,1)]

【问题讨论】:

  • 您可以将每个坐标的所有数据封装在另一个类中,而不是使用坐标的 HashSet,可能称为“Tile”。这样您就可以在该 Tile 类中存储玩家、边缘等。

标签: java graph


【解决方案1】:

只需将您的图表表示为二维矩阵,其中每个单元格将包含一个指定其信息的对象(例如该单元格中的玩家)。邻接由矩阵中的索引确定。如果您需要用更多信息来装饰它,例如墙壁之类的,也许使用另一个具有相同尺寸的矩阵覆盖此信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多