六边形棋盘结构动物分数计算算法优化咨询
六边形地图分数计算的算法优化咨询
数据结构说明:
- 使用
HashMap<Point, Tile>表示六边形结构的游戏地图 Point类:仅包含int类型的x和y坐标属性,构造方法为Point(int x, int y)Tile类:包含Habitat(栖息地)属性与Animal animalToken(动物标记)属性,构造方法为Tile(Habitat habitat, Animal animalToken)
- 使用
需求目标:根据地图上tiles的动物标记计算分数,分数规则遵循Cascadia游戏的官方规则。
当前问题:之前的实现逻辑混乱,仅计算单一种类动物的分数就需要编写100多行代码。
已实现功能:已完成获取指定点相邻可用tiles的功能,代码如下:
private static ArrayList<Tile> adjacentAvailableTile(Point point) { return adjacentAvailableTile(adjacentAvailablePoints(point)); } private static ArrayList<Tile> adjacentAvailableTile(ArrayList<Point> points) { ArrayList<Tile> availableTiles = new ArrayList<>(); for (Point point : points) { Tile tile = board.get(point); availableTiles.add(tile); } return availableTiles; } private static ArrayList<Point> adjacentAvailablePoints(Point originPoint) { Point[] sixAdjacentPoint = new Point[6]; int i = 0; for (Position pos : Position.values()) //遍历Position枚举 { //sixAdjacentPoint现在包含了给定点的所有相邻点 sixAdjacentPoint[i++] = getPoint(originPoint, pos); } ArrayList<Point> availablePoint = new ArrayList<>(); for (Point point : sixAdjacentPoint) { if (board.containsKey(point)) availablePoint.add(point); } return availablePoint; }
由于对图结构相关算法了解较少,想咨询有哪些合适的算法/搜索算法可以简化这部分分数计算的开发?
内容的提问来源于stack exchange,提问作者st3ems
相关产品推荐
相关产品推荐

