Ejemplo n.º 1
0
        private void Search(int StartX, int StartY, int TargetX, int TargetY)
        {
            foreach (var item in Map)
            {
                item.IsMoved = false;
            }
            BranchList.Clear();
            OverBranch = null;
            SearchEnd  = false;
            int    MaxSearchNum = MapSizeX * MapSizeY;
            Branch branch       = branchPools.GetItem(null);

            branch.Endx = TargetX;
            branch.Endy = TargetY;
            branch.Add(Map[StartX, StartY]);
            BranchList.Add(branch);
            int Count = 0;

            for (int i = 0; i < MaxSearchNum; i++)
            {
                if (SearchEnd)
                {
                    return;
                }
                //步进
                Count = BranchList.Count;
                for (int j = 0; j < Count; j++)
                {
                    GoNext(BranchList[j]);
                }
            }
        }