迪杰斯特拉 算法 在游戏中的运用

摘要:
迪杰斯特拉.是算最短节点的。虽然网上有很多文献资料和代码,不过并不适合我的口味。staticvoidMain{intn=7,en=11;//-1表示不可达int[,]a=newint[,]{{0,6,3,-1,-1,-1,-1},{6,0,2,5,-1,-1,-1},{3,2,0,3,4,-1,-1},{-1,5,3,0,2,3,2},{-1,-1,4,2,0,5,-1},{-1,-1,-1,3,5,0,3},{-1,-1,-1,2,-1,3,0}};ConsoleApplication2.Dijkstra.GraphClassgc=newConsoleApplication2.Dijkstra.GraphClass();gc.CreateMGraph;Console.WriteLine;gc.Dijkstra;Console.ReadKey();}大致运行效果就是这样的,好处就是输入起点和终点坐标快速查找到最佳路径和距离。下面我来说说Dijkstra算法在游戏中的运用。比如上面这个地图,就比较适合Dijkstra方式.当然这种算法也有他的缺点,就是初始化数据比较大。记得很久以前有个叫武林英雄的游戏,他也是这么做的,路径导航显示人物需要走的地方,也可以把大地图切割成小地图。
迪杰斯特拉 (Dijkstra).是算最短节点的。虽然网上有很多文献资料和代码,不过并不适合我的口味。于是简单的改造了下。

迪杰斯特拉 算法 在游戏中的运用第1张

纯手工鼠标画图一张。

   static void Main(string[] args)
    {
      int n = 7, en = 11;
      //-1表示不可达
      int[,] a = new int[,] { { 0, 6, 3, -1, -1, -1,-1 }, { 6, 0, 2, 5, -1, -1,-1  }, { 3, 2, 0, 3, 4, -1 ,-1}, 
            { -1, 5, 3, 0, 2, 3 ,2}, { -1, -1, 4, 2, 0, 5,-1 }, { -1, -1, -1, 3, 5, 0 ,3}, { -1, -1, -1, 2, -1, 3 ,0}  };
      ConsoleApplication2.Dijkstra.GraphClass gc = newConsoleApplication2.Dijkstra.GraphClass();
      gc.CreateMGraph(n, en, a);
        Console.WriteLine(gc.DispMGraph());
      gc.Dijkstra("1","5");
      Console.ReadKey();
    }

迪杰斯特拉 算法 在游戏中的运用第2张

大致运行效果就是这样的,好处就是 输入起点和终点坐标 快速查找到最佳路径和距离。

下面我来说说

Dijkstra 算法在游戏中的运用。

迪杰斯特拉 算法 在游戏中的运用第3张

比如上面这个地图,就比较适合Dijkstra方式.当然这种算法也有他的缺点,就是初始化数据比较大。

优点就是真是感强。记得很久以前有个叫武林英雄的游戏,他也是这么做的,路径导航显示人物需要走的地方,也可以把大地图切割成小地图。

分成大市县乡村等,我们从 一个 城市去另一个城市,不需要跳到最大城市再找,我们只要从甲城市的 某个村就能去 乙城市的某个村。就好像 南京到安徽,只要在马鞍山附件,直接就可以过去。

免责声明:文章转载自《迪杰斯特拉 算法 在游戏中的运用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下安装mysqlhcharts实现堆叠柱形图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

TCP 的那些事儿(下)

本文转载自TCP 的那些事儿(下) 导语 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准...

从零开始学区块链(4)

转自:区块链大师 1. 传统分布式一致性算法和区块链共识过程的异同点 相同点: Append only(只能增加) 强调序列化 少数服从多数原则 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志 不同点: 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考...

新东方人工智能中台实践和AI部门管理经验分享

文章作者:张建鑫 前言 新东方人工智能开放平台 ( https://ai.xdf.cn/ ) 致力于教育+AI创新,以行业最低价格,提供智能语音、文字识别、人脸人体、自然语言理解等优质AI开放能力,助力中小公司快速低成本创新,全面赋能教育事业。欢迎访问网站,并留下宝贵意见。 与AI同行相比,新东方以少得多的人力和低得多的研发投入,从2020年8月,仅用一年...

分布式算法(一致性Hash算法)

转载:https://www.cnblogs.com/moonandstar08/p/5405991.html 一、分布式算法     在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(...

设计模式之禅之设计模式-建造者模式

一:建造者模式的定义        --->建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示        ● Product产品类                通常是实现了模板方法模式,也就是有模板方法和基本方法,这个参考模板方法模式。例子中的Ben...

异常检测 | 使用孤立森林 sklearn.ensemble.IsolationForest 分析异常流量

孤立森林 Isolation Forest(sklearn.ensemble.IsolationForest):一种适用于连续数据的无监督异常检测方法。与随机森林类似,都是高效的集成算法,相较于LOF,K-means等传统算法,该算法鲁棒性高且对数据集的分布无假设。 Isolation Forest算法做非监督式的异常点检测分析,对数据特征的要求宽松:...