程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現A*算法(3)

C#實現A*算法(3)

編輯:關於C語言
們知道,如果定義上、下、左、右的 代價為1,那麼斜線的代價應為根號2,為了提高計算效率,我們將根號2取近似 值為1.4,並將單位放大10倍(計算機對整數的運算比對浮點數的運算要快很多 )。

我們還需要一個結構來保存在路徑規劃過程中的中間結果:

Code

[copy to clipboard]CODE:

/// <summary>
  /// RoutePlanData 用於封裝一次路徑規劃過程中 的規劃信息。
  /// </summary>
  public class RoutePlanData
  {
    #region CellMap
     private Rectangle cellMap;
    /// <summary>
     /// CellMap 地圖的矩形大小。經過單元格標准處理。
    /// </summary>
    public Rectangle CellMap
     {
      get { return cellMap; }
    }
     #endregion
    #region ClosedList
    private IList<AStarNode> closedList = new List<AStarNode>();
    /// <summary>
    /// ClosedList 關閉列表,即存 放已經遍歷處理過的節點。
    /// </summary>
     public IList<AStarNode> ClosedList
    {
       get { return closedList; }
    }
     #endregion
    #region OpenedList
    private IList<AStarNode> openedList = new List<AStarNode>();
    /// <summary>
    /// OpenedList 開放列表,即存 放已經開發但是還未處理的節點。
    /// </summary>
    public IList<AStarNode> OpenedList
    {
      get { return openedList; }
    }
     #endregion
    #region Destination
    private Point destination;
    /// <summary>
    /// Destination 目的節點的位置。
    /// </summary>
     public Point Destination
    {
      get { return destination; }
    }
    #endregion
     #region Ctor
    public RoutePlanData(Rectangle map, Point _destination)
    {
      this.cellMap = map;
      this.destination = _destination;
    }
    #endregion
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved