From d8f361c9d69271aaa58ba19e75f38e0fee00f3bb Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 24 十二月 2024 08:36:33 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/utils/NavigateSolution.java | 39 ++++++++++++++++++++++++--------------- 1 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java index 89046a8..2ad8529 100644 --- a/src/main/java/com/zy/common/utils/NavigateSolution.java +++ b/src/main/java/com/zy/common/utils/NavigateSolution.java @@ -1,8 +1,10 @@ package com.zy.common.utils; +import com.core.common.SpringUtils; import com.zy.common.model.NavigateNode; import java.util.ArrayList; +import java.util.List; import java.util.PriorityQueue; /** @@ -14,17 +16,13 @@ int[][] map = {{}}; - public NavigateSolution() { - //杞藉叆鍦板浘 - NavigateMapData mapData = new NavigateMapData(); - int[][] data = mapData.getData(); - this.map = data; - } - - public NavigateSolution(String mapType) { - //杞藉叆鍦板浘 - NavigateMapData mapData = new NavigateMapData(); - int[][] data = mapData.getData(mapType); + public NavigateSolution(Integer mapType, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) { + //杞藉叆鍦板浘鎸囧畾灞傞珮鍦板浘 + NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); + int[][] data = navigateMapData.getDataFromRedis(lev, mapType, whitePoints, shuttlePoints); + if (data == null) { + data = navigateMapData.getData(lev, mapType, whitePoints, shuttlePoints); + } this.map = data; } @@ -55,7 +53,7 @@ //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇 for (NavigateNode node : neighbour_node) { // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) - int gCost = calcNodeCost(current_node, node) * calcNodeExtraCost(current_node, node, end); + int gCost = calcNodeCost(current_node, node) + calcNodeExtraCost(current_node, node, end); if (node.getX() == end.getX() && node.getY() == end.getY()) {//鎵惧埌鐩爣缁撶偣灏辫繑鍥� //init_node鎿嶄綔鎶婅繖涓偦灞呯粨鐐圭殑鐖惰妭鐐硅缃负褰撳墠缁撶偣 //骞朵笖璁$畻鍑篏锛� F锛� H绛夊�� @@ -135,8 +133,8 @@ } } - if (map[x][y] == 0 || map[x][y] == 3) { - //瀛愯建鍜屾瘝杞ㄦ墠鑳借繘琛屼笂涓嬬Щ鍔� + if (map[x][y] == 0 || map[x][y] == 3 || map[x][y] == 4 || map[x][y] == 5) { + //瀛愯建鍜屾瘝杞ㄣ�佽緭閫佺嚎銆佸厖鐢垫々鎵嶈兘杩涜涓婁笅绉诲姩 if (is_valid(x + 1, y)) { NavigateNode node = new NavigateNode(x + 1, y); @@ -198,13 +196,24 @@ return 1; } + // 鎷愬悜涓昏建閬撶殑鐐� + if (map[nextNode.getX()][nextNode.getY()] == 3) { + //------------------涓夊嚡鐙壒鍒ゆ柇------------------// + if (nextNode.getX() == 15) { + return 2;//褰卞搷绠楁硶锛屼笉瑕佸湪15鎺掕繖涓富杞ㄩ亾鎹㈠悜 + } + //------------------涓夊嚡鐙壒鍒ゆ柇------------------// + + return 0; + } + // 鏅�氭嫄鐐� /* 鎷愮偣鍒ゆ柇閫昏緫 鎷垮埌鐖惰妭鐐瑰拰涓嬩竴鑺傜偣 閫氳繃鍒ゆ柇鐖惰妭鐐瑰拰涓嬩竴鑺傜偣鐨剎鏁版嵁鍜寉鏁版嵁閮戒笉鐩稿悓鏃讹紝鍒欒〃鏄庡綋鍓嶅潗鏍囨槸涓�涓嫄鐐� */ - return 2; + return 3; } //------------------A*鍚彂鍑芥暟-end------------------// -- Gitblit v1.9.1