From 314e894c0d6ce2739344dcd1c94ae7770868a0f1 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 28 五月 2025 14:51:16 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java index 9b8be6c..45f6a71 100644 --- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java +++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java @@ -333,7 +333,7 @@ for (int i = 0; i < outerCircle; i++) { int idx = i + 1; - List<NavigateNode> list = extend_nodes(map, currentNode, idx); + List<NavigateNode> list = extend_outer_nodes(map, currentNode, idx); if (list.isEmpty()) { continue; } @@ -374,7 +374,7 @@ for (int i = 0; i < innerCircle; i++) { int idx = i + 1; - List<NavigateNode> list = extend_nodes(map, currentNode, idx); + List<NavigateNode> list = extend_inner_nodes(map, currentNode, idx); if (list.isEmpty()) { continue; } @@ -397,7 +397,7 @@ return innerNodes; } - private List<NavigateNode> extend_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) { + private List<NavigateNode> extend_inner_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) { //榛樿鍦板浘姣嶈建鏂瑰悜x String mapDirection = "x"; ConfigService configService = SpringUtils.getBean(ConfigService.class); @@ -504,6 +504,50 @@ return nodes; } + private List<NavigateNode> extend_outer_nodes(int[][] map, NavigateNode startNode, int innerCircleIdx) { + ArrayList<NavigateNode> nodes = new ArrayList<>(); + int x = startNode.getX(); + int y = startNode.getY(); + int z = startNode.getZ(); + + if (is_valid(map, x + innerCircleIdx, y)) { + NavigateNode node = new NavigateNode(x + innerCircleIdx, y); + node.setNodeValue(map[x + innerCircleIdx][y]); + node.setZ(z); + if (node.getNodeValue().equals(startNode.getNodeValue())) { + nodes.add(node); + } + } + + if (is_valid(map, x - innerCircleIdx, y)) { + NavigateNode node = new NavigateNode(x - innerCircleIdx, y); + node.setNodeValue(map[x - innerCircleIdx][y]); + node.setZ(z); + if (node.getNodeValue().equals(startNode.getNodeValue())) { + nodes.add(node); + } + } + + if (is_valid(map, x, y + innerCircleIdx)) { + NavigateNode node = new NavigateNode(x, y + innerCircleIdx); + node.setNodeValue(map[x][y + innerCircleIdx]); + node.setZ(z); + if (node.getNodeValue().equals(startNode.getNodeValue())) { + nodes.add(node); + } + } + + if (is_valid(map, x, y - innerCircleIdx)) { + NavigateNode node = new NavigateNode(x, y - innerCircleIdx); + node.setNodeValue(map[x][y - innerCircleIdx]); + node.setZ(z); + if (node.getNodeValue().equals(startNode.getNodeValue())) { + nodes.add(node); + } + } + return nodes; + } + private boolean is_valid(int[][] map, int x, int y) { if (x < 0 || x >= map.length || y < 0 || y >= map[0].length) { -- Gitblit v1.9.1