当前位置: 首页 > news >正文

从用户角度网站应该具备的条件网站开发的结构图

从用户角度网站应该具备的条件,网站开发的结构图,网页设计需要学什么好,中国石化工程建设有限公司邮政编码注意#xff1a; 本文是对基于下方文章链接的理论#xff0c;并最终代码实现#xff0c;感谢作者大大的描述#xff0c;非常详细#xff0c;流程稍微做了些改动#xff0c;文末有工程网盘链接#xff0c;感兴趣的可以下载。 A*算法详解(个人认为最详细,最通俗易懂的一…注意 本文是对基于下方文章链接的理论并最终代码实现感谢作者大大的描述非常详细流程稍微做了些改动文末有工程网盘链接感兴趣的可以下载。 A*算法详解(个人认为最详细,最通俗易懂的一个版本)-CSDN博客 1、效果演示 2、A*算法流程 1         把起点加入 open list 。 2         重复如下过程 a.         遍历 open list 查找 F 值最小的节点把它作为当前要处理的节点。 b.         对当前方格的 8连通的每一个方格             ◆     如果它是不可抵达的或者它在 close list 中忽略它。否则做如下操作。 ◆     如果它不在 open list 中把它加入 open list 并且把当前方格设置为它的父亲记录该方格的 F  G 和 H 值。 ◆     如果它已经在 open list 中检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样把它的父亲设置为当前方格并重新计算它的 G 和 F 值。 c.         把这个节点移到 close list 。 d.         停止当你 ◆     把终点加入到了 open list 中此时路径已经找到了或者 ◆     查找终点失败并且 open list 是空的此时没有路径。 3         保存路径。从终点开始每个方格沿着父节点移动直至起点这就是你的路径。 3、代码 逻辑层Node结点定义 using UnityEngine;public enum GridState {Empty,Block, } public class Node {public GridState curState;public int X;public int Y;public int F;public int G;public int H;public Node parentNode;public Node(int x, int y){X x;Y y;ResetNode();}public void ResetNode(){curState GridState.Empty;F 0;G 0;H 0;parentNode null;}public void CalculateValue(Node endNode){if (parentNode null) return;//计算GG GetPredictGValue(parentNode);//曼哈顿距离计算HH Mathf.Abs(endNode.X - X) Mathf.Abs(endNode.Y - Y);F G H;}public int GetPredictGValue(Node targetNode){int predictG 0;//四连通if (targetNode.X X || targetNode.Y Y){predictG targetNode.G 10;}//八连通else{predictG targetNode.G 14;}return predictG;}}寻路算法 using System.Collections.Generic;public partial class PathFind {private ListNode openList;private ListNode closeList;private Node[,] allNodeList;public void AStarInit(Node[,] allNodes){openList new ListNode();closeList new ListNode();allNodeList allNodes;}public void FindRoad(Node startNode, Node endNode){openList.Add(startNode);LoopFindRoad(endNode);}private void LoopFindRoad(Node endNode){//找到终点或者不存在路径if (openList.Count 0||openList.Contains(endNode)){return;}//找到F值最小的Node smallestFNode null;for (int i 0; i openList.Count; i){if (smallestFNode null){smallestFNode openList[i];continue;}if (openList[i].FsmallestFNode.F){smallestFNode openList[i];}}//获得八连通格子ListNode eightAdjacent GetRoundNode(smallestFNode);//更新代价for (int i 0; i eightAdjacent.Count; i){//不在openList里面if (!openList.Contains(eightAdjacent[i])){eightAdjacent[i].parentNode smallestFNode;eightAdjacent[i].CalculateValue(endNode);openList.Add(eightAdjacent[i]);}else{//判断是否需要更新F,G,Hif (eightAdjacent[i].GetPredictGValue(smallestFNode) eightAdjacent[i].G){eightAdjacent[i].parentNode smallestFNode;eightAdjacent[i].CalculateValue(endNode);}}}//转移结点openList.Remove(smallestFNode);closeList.Add(smallestFNode);LoopFindRoad(endNode);}/// summary/// 获得八连通格子中可达到并且不在closeList中的格子/// /summary/// returns/returnsprivate ListNode GetRoundNode(Node targetNode){int x targetNode.X;int y targetNode.Y;ListNode tempList new ListNode();if (IsReachableNode(x, y 1)) tempList.Add(allNodeList[x, y 1]);if (IsReachableNode(x 1, y 1)) tempList.Add(allNodeList[x 1, y 1]);if (IsReachableNode(x 1, y)) tempList.Add(allNodeList[x 1, y]);if (IsReachableNode(x 1, y - 1)) tempList.Add(allNodeList[x 1, y - 1]);if (IsReachableNode(x, y - 1)) tempList.Add(allNodeList[x, y - 1]);if (IsReachableNode(x - 1, y - 1)) tempList.Add(allNodeList[x - 1, y - 1]);if (IsReachableNode(x - 1, y)) tempList.Add(allNodeList[x - 1, y]);if (IsReachableNode(x - 1, y 1)) tempList.Add(allNodeList[x - 1, y 1]);return tempList;}/// summary/// 判断格子是否可到达/// /summary/// param namex/param/// param namey/param/// returns/returnsprivate bool IsReachableNode(int x, int y){if (x allNodeList.GetLength(0) || x 0){return false;}if (y allNodeList.GetLength(1) || y 0){return false;}if (allNodeList[x, y].curState GridState.Block){return false;}if (closeList.Contains(allNodeList[x, y])){return false;}return true;} }4、补充 如果希望过障碍时不允许他斜向过障碍可以额外加个判断原理很简单对于8连通的角落点判断角落点的4连通是否有障碍如果有障碍就不算入可到达格子。 代码如下 演示 5、工程网盘链接 通过网盘分享的文件AStarDemo.unitypackage 链接: https://pan.baidu.com/s/1L_f1DIkqe9Oqm_dnFSSVew 提取码: 1212
http://www.dnsts.com.cn/news/157194.html

相关文章:

  • 怎么自己网站建设商业网站网页
  • 代做论文网站好亦庄网站开发
  • win7 iis建立网站石家庄网站建设规划
  • 集团网站建dede手机网站跳转
  • 网站建设 软件有哪些方面wordpress主题demo
  • 行业 网站 方案制作个网站需要多少钱
  • 网站wordpress安徽省博物馆网站建设
  • 长沙做产检玛丽亚m网站wordpress 源码出售
  • 辽宁省网站备案系统wap盛唐建站
  • 这么建设新的网站海报素材网站推荐
  • 手表网站欧米茄价格wordpress在线查询系统
  • 广州最好网站策划wordpress cms门户主题
  • 电子商务网站建设考试重点肇庆网站快速排名提升
  • 佳木斯做网站的公司外贸业务员怎么开发客户
  • 扬州市开发区建设局网站首页宁波网站建设是哪家便宜
  • jsp建网站建设工程合同无效的情形
  • 设计网站的步骤有哪些北京网站开发
  • 外国网站英语要求广州安全教育平台登录账号登录
  • 必应搜索引擎怎么样网站文字优化方案
  • 推荐营销型网站建设安卓优化大师老版本下载
  • 做网站防护的网站卖域名做非法网站
  • 网站建设营销外包公司网络媒体整合营销
  • php网站开发设计网页设计视频代码
  • 建设网站遇到的问题友链互换平台推荐
  • 云服务器做淘客网站vue大型网站开发吗
  • 怎样做网站标题优化网站一个月
  • 做非洲国际贸易网站微信小程序制作网站
  • 十堰网站优化排名外链 推网站怎么做
  • 用软件做模板下载网站做网站多久
  • 网站套利怎么做平台托管是什么意思