From dad4b7fd3a7fcaed73d28f0ebd9e90d86ca21225 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 22 七月 2025 12:34:51 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/utils/NavigateSolution.java | 54 +++++++++++++++++++++++------------------------------- 1 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java index 3fc56ed..6910520 100644 --- a/src/main/java/com/zy/common/utils/NavigateSolution.java +++ b/src/main/java/com/zy/common/utils/NavigateSolution.java @@ -104,6 +104,18 @@ } public NavigateNode astarSearchJava(NavigateNode start, NavigateNode end) { + //榛樿鍦板浘姣嶈建鏂瑰悜x + String mapDirection = "x"; + ConfigService configService = SpringUtils.getBean(ConfigService.class); + if (configService != null) { + Config config = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "direction_map") + .eq("status", 1)); + if (config != null) { + mapDirection = config.getValue(); + } + } + //鎶婄涓�涓紑濮嬬殑缁撶偣鍔犲叆鍒癘pen琛ㄤ腑 this.Open.add(start); //涓诲惊鐜� @@ -118,7 +130,7 @@ //灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑 Close.add(current_node); //瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍 - ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node); + ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node, mapDirection); //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇 for (NavigateNode node : neighbour_node) { // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) @@ -144,19 +156,7 @@ } - public ArrayList<NavigateNode> extend_current_node(NavigateNode current_node) { - //榛樿鍦板浘姣嶈建鏂瑰悜x - String mapDirection = "x"; - ConfigService configService = SpringUtils.getBean(ConfigService.class); - if (configService != null) { - Config config = configService.selectOne(new EntityWrapper<Config>() - .eq("code", "direction_map") - .eq("status", 1)); - if (config != null) { - mapDirection = config.getValue(); - } - } - + public ArrayList<NavigateNode> extend_current_node(NavigateNode current_node, String mapDirection) { //鑾峰彇褰撳墠缁撶偣鐨剎, y int x = current_node.getX(); int y = current_node.getY(); @@ -193,14 +193,12 @@ if (mapDirection.equals("x")) {//姣嶈建x鏂瑰悜 if (map[x][y] == MapNodeType.MAIN_PATH.id) { //姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩 - if (is_valid(x + 1, y)) - { + if (is_valid(x + 1, y)) { NavigateNode node = new NavigateNode(x + 1, y); node.setNodeValue(map[x + 1][y]); neighbour_node.add(node); } - if (is_valid(x - 1, y)) - { + if (is_valid(x - 1, y)) { NavigateNode node = new NavigateNode(x - 1, y); node.setNodeValue(map[x - 1][y]); neighbour_node.add(node); @@ -209,30 +207,26 @@ if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜宸﹀彸绉诲姩 - if (is_valid(x, y + 1)) - { + if (is_valid(x, y + 1)) { NavigateNode node = new NavigateNode(x, y + 1); node.setNodeValue(map[x][y + 1]); neighbour_node.add(node); } - if (is_valid(x, y - 1)) - { + if (is_valid(x, y - 1)) { NavigateNode node = new NavigateNode(x, y - 1); node.setNodeValue(map[x][y - 1]); neighbour_node.add(node); } } - }else if (mapDirection.equals("y")) {//姣嶈建y鏂瑰悜 + } else if (mapDirection.equals("y")) {//姣嶈建y鏂瑰悜 if (map[x][y] == MapNodeType.MAIN_PATH.id) { //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩 - if (is_valid(x, y + 1)) - { + if (is_valid(x, y + 1)) { NavigateNode node = new NavigateNode(x, y + 1); node.setNodeValue(map[x][y + 1]); neighbour_node.add(node); } - if (is_valid(x, y - 1)) - { + if (is_valid(x, y - 1)) { NavigateNode node = new NavigateNode(x, y - 1); node.setNodeValue(map[x][y - 1]); neighbour_node.add(node); @@ -241,14 +235,12 @@ if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜涓婁笅绉诲姩 - if (is_valid(x + 1, y)) - { + if (is_valid(x + 1, y)) { NavigateNode node = new NavigateNode(x + 1, y); node.setNodeValue(map[x + 1][y]); neighbour_node.add(node); } - if (is_valid(x - 1, y)) - { + if (is_valid(x - 1, y)) { NavigateNode node = new NavigateNode(x - 1, y); node.setNodeValue(map[x - 1][y]); neighbour_node.add(node); -- Gitblit v1.9.1