package astar0 import ( "fmt" "testing" "time" ) // * 1 0 1 0 1 0 0 0 0 // 0 * * * 0 1 0 1 0 0 // 1 1 1 1 * 1 0 1 0 1 // * * * * * 0 0 1 0 1 // * 1 0 1 1 1 1 1 0 0 // * 1 0 0 0 0 0 0 0 1 // * 1 1 1 1 1 1 1 1 1 // 0 * * 0 1 * * * 1 0 // 1 1 0 * 1 * 1 0 * 0 // 0 0 0 0 * * 1 0 1 * func TestAStar(t *testing.T) { config := Config{ Width: 26, Height: 26, HeuristicFunc: DiagonalFunc, MapData: [][]int32{ {0, 1, 0, 1, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 1, 0, 0}, {1, 1, 1, 1, 0, 1, 0, 1, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, {0, 1, 0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 1, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 1, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 1, 0}, }, DirectionFunc: Direction6Func, IsDebug: false, } aStar := New(config) startTime := time.Now().UnixNano() fmt.Printf("开始:%d\n", startTime) pathList1, err := aStar.FindPath(0, 0, 25, 25) if err != nil { fmt.Println(err) return } endTime := time.Now().UnixNano() fmt.Printf("结束:%d\n", endTime) fmt.Printf("耗时:%v(ns)\n", endTime-startTime) aStar.Print(pathList1) aStar.CheckNodes() fmt.Println("---------------------------------") pathList2, err := aStar.FindPath(6, 3, 5, 5) if err != nil { fmt.Println(err) return } aStar.Print(pathList2) aStar.CheckNodes() }