玩過即時戰略,RPG等類型的游戲的朋友一定會知道,當我們用鼠標選取某些單位並命令其到達地圖上確定的位置時,這些單位總是可以自動的選擇最短的路徑到達。這個時候我們就會聯想到大名鼎鼎的A*尋路算法,下文簡略介紹算法實現原理,並附上C#實現方法。
算法原理請見:http://data.gameres.com/message.asp?TopicID=25439
代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
test mytest = new test();
//定義出發位置
Point pa = new Point();
pa.x = 1;
pa.y = 1;
//定義目的地
Point pb = new Point();
pb.x = 8;
pb.y = 8;
mytest.FindWay(pa, pb);
mytest.PrintMap();
Console.ReadLine();
}
}
class test
{
//數組用1表示可通過,0表示障礙物
byte[,] R = new byte[10, 10] {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
{ 1,