纯手工鼠标画图一张。
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(); }
大致运行效果就是这样的,好处就是 输入起点和终点坐标 快速查找到最佳路径和距离。
下面我来说说
Dijkstra 算法在游戏中的运用。比如上面这个地图,就比较适合Dijkstra方式.当然这种算法也有他的缺点,就是初始化数据比较大。
优点就是真是感强。记得很久以前有个叫武林英雄的游戏,他也是这么做的,路径导航显示人物需要走的地方,也可以把大地图切割成小地图。
分成大市县乡村等,我们从 一个 城市去另一个城市,不需要跳到最大城市再找,我们只要从甲城市的 某个村就能去 乙城市的某个村。就好像 南京到安徽,只要在马鞍山附件,直接就可以过去。