├── map.temp ├── README.md ├── tb.png ├── map.png ├── api.php ├── index.php ├── map.php └── b.html /map.temp: -------------------------------------------------------------------------------- 1 | 恩施自治区,宜昌,荆门市 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # -实现路径最短, 2 | 模拟物体移动 3 | -------------------------------------------------------------------------------- /tb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heixiaoma/php_map/master/tb.png -------------------------------------------------------------------------------- /map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heixiaoma/php_map/master/map.png -------------------------------------------------------------------------------- /api.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 下单 8 | 9 | 10 | 11 | 12 |
13 | 14 | 23 | 24 | 33 | 34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /map.php: -------------------------------------------------------------------------------- 1 | ['b' => 69], 15 | 'b' => ['a' => 69, 'e' => 59, 'f' => 210], 16 | 'c' => ['f' => 75], 17 | 'd' => ['e' => 180], 18 | 'e' => ['b' => 59, 'd' => 180, 'g' => 100, 'f' => 290], 19 | 'f' => ['g' => 200, 'e' => 290, 'b' => 210, 'c' => 75], 20 | 'g' => ['e' => 100, 'f' => 200], 21 | ]; 22 | function find($node, $list, $next, $a = []) 23 | { 24 | if (count($next) == count($list)) { 25 | return $_GET = [array_merge($next, $a)]; 26 | } 27 | foreach ($list[$node[strlen($node) - 1]] as $k => $v) { 28 | foreach ($next as $n => $m) { 29 | if ($k == $n[strlen($n) - 1]) { 30 | unset($list[$node][$k]); 31 | } 32 | } 33 | } 34 | foreach ($list[$node[strlen($node) - 1]] as $k => $v) { 35 | $a[$node . $k] = $next[$node] + $v; 36 | } 37 | foreach ($a as $k => $v) { 38 | foreach ($next as $n => $m) { 39 | if ($k[strlen($k) - 1] == $n[strlen($n) - 1]) { 40 | unset($a[$k]); 41 | } 42 | } 43 | } 44 | foreach ($a as $k => $v) { 45 | if (!isset($smallest) || $smallest > $v) { 46 | $smallest = $v; 47 | $node = $k; 48 | } 49 | } 50 | //$node=$node[strlen($node)-1]; 51 | $next[$node] = $smallest; 52 | unset($smallest); 53 | find($node, $list, $next, $a); 54 | } 55 | 56 | function getRouter($start, $end) 57 | { 58 | 59 | $city_code = [ 60 | 'a' => "十堰市", 61 | 'b' => "荆门市", 62 | 'c' => "黄冈市", 63 | 'd' => "恩施自治区", 64 | 'e' => "宜昌", 65 | 'f' => "武汉", 66 | 'g' => "荆州市", 67 | ]; 68 | 69 | 70 | $msg = ["router" => [], "len" => ""]; 71 | 72 | foreach ($_GET[0] as $key => $val) { 73 | 74 | 75 | if ($start == $city_code[$key[0]] && $end == $city_code[$key[(strlen($key)) - 1]]) { 76 | $rarray = array(); 77 | for ($i = 0; $i < strlen($key); $i++) { 78 | $rarray[$i] = $city_code[$key[$i]]; 79 | } 80 | $msg['len'] = $val; 81 | $msg['router'] = $rarray; 82 | } 83 | 84 | 85 | } 86 | return $msg; 87 | } 88 | 89 | $ms =null; 90 | 91 | if (@$_POST['start'] != "" && @$_POST['end']!="") { 92 | 93 | 94 | $startname = @$_POST['start']; 95 | $endname = @$_POST['end']; 96 | $city_codes = [ 97 | '十堰市' => "a", 98 | '荆门市' => "b", 99 | '黄冈市' => "c", 100 | '恩施自治区' => "d", 101 | '宜昌' => "e", 102 | '武汉' => "f", 103 | '荆州市' => "g", 104 | ]; 105 | find($city_codes[$startname], $list, [$endname => 0]); 106 | $ms = getRouter($startname, $endname); 107 | echo "路线指示:"; 108 | $msg=""; 109 | foreach($ms['router'] as $key=>$val){ 110 | echo "--->".$val; 111 | $msg.=$val.","; 112 | } 113 | $msg=substr($msg, 0, -1); 114 | $fopen=fopen("map.temp","wb")or die('文件不在'); 115 | fwrite($fopen,$msg); 116 | fclose($fopen); 117 | echo "
"; 118 | echo "路途长度:".$ms['len']; 119 | echo " 120 | 121 | "; 122 | } 123 | 124 | ?> -------------------------------------------------------------------------------- /b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Canvas刀枪不入躲避小游戏代码 - A5源码 6 | 7 | 38 | 39 | 40 | 41 | 42 | 174 | 175 | 176 | --------------------------------------------------------------------------------