【发布时间】: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<Coordinate, HashSet<Coordinate>
例如,位置(键)(0,0) 有邻居(值):[(0,1),(1,1)]。
【问题讨论】:
-
您可以将每个坐标的所有数据封装在另一个类中,而不是使用坐标的 HashSet,可能称为“Tile”。这样您就可以在该 Tile 类中存储玩家、边缘等。