迪傑斯特拉 算法 在游戲中的運用


 

迪傑斯特拉    (Dijkstra). 是算最短節點的。雖然網上有很多 文獻資料和代碼,不過並不適合我的口味。於是簡單的改造了下。

 

純手工鼠標畫圖一張。

    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 = new ConsoleApplication2.Dijkstra.GraphClass();
            gc.CreateMGraph(n, en, a);
            Console.WriteLine(gc.DispMGraph());
            gc.Dijkstra("1","5");
            Console.ReadKey();
        }

大致運行 效果就是這樣的,好處就是  輸入 起點和終點坐標 快速查找到 最佳路徑和距離。

下面我來說說

Dijkstra  算法 在 游戲中的運用。

比如 上面這個地圖,就比較適合Dijkstra方式. 當然 這種算法也有他的 缺點,就是 初始化數據 比較大。

優點就是 真是感強。記得很久以前有個叫 武林英雄的游戲,他也是這么做的,路徑導航 顯示人物需要走的地方,也可以把大地圖 切割成小地圖。

分成 大 市縣鄉村等,我們 從  一個  城市 去 另一個 城市,不需要 跳到 最大城市 再找,我們只要 從 甲城市的  某個 村 就能 去 乙城市的 某個村。就好像  南京到安徽, 只要在 馬鞍山附件,直接就可以過去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM