astar_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package astar0
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. )
  7. // * 1 0 1 0 1 0 0 0 0
  8. // 0 * * * 0 1 0 1 0 0
  9. // 1 1 1 1 * 1 0 1 0 1
  10. // * * * * * 0 0 1 0 1
  11. // * 1 0 1 1 1 1 1 0 0
  12. // * 1 0 0 0 0 0 0 0 1
  13. // * 1 1 1 1 1 1 1 1 1
  14. // 0 * * 0 1 * * * 1 0
  15. // 1 1 0 * 1 * 1 0 * 0
  16. // 0 0 0 0 * * 1 0 1 *
  17. func TestAStar(t *testing.T) {
  18. config := Config{
  19. Width: 26,
  20. Height: 26,
  21. HeuristicFunc: DiagonalFunc,
  22. MapData: [][]int32{
  23. {0, 1, 0, 1, 0, 1, 0, 0, 0, 0},
  24. {0, 0, 0, 0, 0, 1, 0, 1, 0, 0},
  25. {1, 1, 1, 1, 0, 1, 0, 1, 0, 1},
  26. {0, 0, 0, 0, 0, 0, 0, 1, 0, 1},
  27. {0, 1, 0, 1, 1, 1, 1, 1, 0, 0},
  28. {0, 1, 0, 0, 0, 0, 0, 0, 0, 1},
  29. {0, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  30. {0, 0, 0, 0, 1, 0, 0, 0, 1, 0},
  31. {1, 1, 0, 0, 1, 0, 1, 0, 0, 0},
  32. {0, 0, 0, 0, 0, 0, 1, 0, 1, 0},
  33. },
  34. DirectionFunc: Direction6Func,
  35. IsDebug: false,
  36. }
  37. aStar := New(config)
  38. startTime := time.Now().UnixNano()
  39. fmt.Printf("开始:%d\n", startTime)
  40. pathList1, err := aStar.FindPath(0, 0, 25, 25)
  41. if err != nil {
  42. fmt.Println(err)
  43. return
  44. }
  45. endTime := time.Now().UnixNano()
  46. fmt.Printf("结束:%d\n", endTime)
  47. fmt.Printf("耗时:%v(ns)\n", endTime-startTime)
  48. aStar.Print(pathList1)
  49. aStar.CheckNodes()
  50. fmt.Println("---------------------------------")
  51. pathList2, err := aStar.FindPath(6, 3, 5, 5)
  52. if err != nil {
  53. fmt.Println(err)
  54. return
  55. }
  56. aStar.Print(pathList2)
  57. aStar.CheckNodes()
  58. }