Пример #1
0
        /// <summary>
        /// ルートを計算する
        /// </summary>
        private void CalcRoute()
        {
            // セルマップがなければ、何もしない
            if (map == null || map.Width == 0)
            {
                return;
            }

            // A* を生成する
            var astar = new Astar8<Cell>(map, 10);
            //// ログ処理を設定
            //astar.Log = msg => Debug.WriteLine(DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss.fff] ") + msg);

            // ルートを計算する
            route = astar.FindRoute(startPos, endPos);

            // 現在位置を始点にする
            currIndex = 0;

            // マップを再描画
            DrawMap();
        }
Пример #2
0
        /// <summary>
        /// ルートを計算する
        /// </summary>
        private void CalcTerritory()
        {
            // セルマップがなければ、何もしない
            if (map == null || map.Width == 0)
            {
                return;
            }

            // A* を生成する
            var astar = new Astar8<Cell>(map, 10);
            //// ログ処理を設定
            //astar.Log = msg => Debug.WriteLine(DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss.fff] ") + msg);

            // ルートを計算する
            var workMap = astar.Calc(startPos, 100);

            //
            territory = workMap.Where(c => c.StepScore > 0 && c.StepScore <= 50);

            // 現在位置を始点にする
            currIndex = 0;

            // マップを再描画
            DrawMap();
        }
Пример #3
0
        private void Start()
        {
            var astar = new Astar8<Cell>(CellMap, 10);

            // デバッグモード
            if (checkBoxDebug.Checked)
            {
                astar.Log = log;
            }

            SuspendLayout(() =>
            {
                log("start calc");
                var route = astar.FindRoute(StartPos, EndPos);
                log("end calc");

                if (route == null)
                {
                    log("route not found");
                }
                else
                {
                    log($"route found: {route.Count} steps");
                    route.ForEach(c => log($"{c.X},{c.Y}"));
                }
            });
        }