Пример #1
0
        /// <summary>
        /// 開始位置と終了位置を設定する
        /// </summary>
        private void SetPos()
        {
            // カーソルがなければ、何もしない
            if (cursorPos == null)
            {
                return;
            }

            // カーソル位置のセルを取得する
            var cell = map[cursorPos.X, cursorPos.Y];
            // 立ち入り禁止の場合、何もしない
            if (!cell.Steppable)
            {
                return;
            }

            // 次が開始位置の場合
            if (nextStart)
            {
                // ルートをクリア
                ClearRoute();

                // 開始位置をセット
                startPos = new Position(cursorPos.X, cursorPos.Y);
                // 終了位置はクリア
                endPos = null;

                // マップを再描画
                DrawMap();
            }
            // 次が終了位置の場合
            else
            {
                // 終了位置をセット
                endPos = new Position(cursorPos.X, cursorPos.Y);

                // ルートを計算
                CalcRoute();
                CalcTerritory();

                // マップを再描画
                DrawMap();

                // 自動再生
                PlayRoute();
            }

            // 次を切り替える
            nextStart = !nextStart;
        }
Пример #2
0
        /// <summary>
        /// カーソル位置を設定する
        /// </summary>
        /// <param name="viewX">ビュー座標 X</param>
        /// <param name="viewY">ビュー座標 Y</param>
        /// <returns>変更された場合 true, それ以外の場合 false</returns>
        private bool SetMapCursor(int viewX, int viewY)
        {
            // ビュー座標からマップ座標に変換
            var x = viewX / (TILE_SIZE + TILE_MARGIN * 2);
            var y = viewY / (TILE_SIZE + TILE_MARGIN * 2);

            // 範囲外の場合、何もしない
            if (!map.InRange(x, y))
            {
                return false;
            }

            // 戻り値
            var ret = false;

            // 現在位置がなければ
            if (cursorPos == null)
            {
                // 生成する
                cursorPos = new Position(x, y);
                ret = true;
            }
            // 現在位置があれば
            else
            {
                // 座標値が変更されていれば
                if (cursorPos.X != x || cursorPos.Y != y)
                {
                    // セット
                    cursorPos.X = x;
                    cursorPos.Y = y;
                    ret = true;
                }
            }

            // 結果を返す
            return ret;
        }
Пример #3
0
        /// <summary>
        /// セルマップを初期化する
        /// </summary>
        /// <param name="map">セルマップ</param>
        private void Init(CellMap<Cell> map)
        {
            // 保持
            this.map = map;

            // 開始位置、終了位置は未設定
            startPos = null;
            endPos = null;

            // セルマップサイズのラベルを設定
            toolStripLabelSize.Text = $"(W, H)=({map.Width}, {map.Height})";

            // ルートをクリア
            ClearRoute();

            // キャンバスを初期化
            InitCanvas();
        }
Пример #4
0
 /// <summary>
 /// カーソルをクリアする
 /// </summary>
 private void ClearMapCursor()
 {
     cursorPos = null;
 }
Пример #5
0
        private void InitData_Type2()
        {
            var str =
                "10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10"
             + ",10,10,10,10,10,10,-1,-1,10,-1,10,10,10,10,10,10,10,10,10,10"
             + ",10,10,10,10,10,-1,10,10,10,-1,-1,10,10,10,-1,10,10,10,-1,10"
             + ",10,10,10,10,10,-1,10,10,-1,-1,10,-1,10,10,10,-1,10,-1,10,10"
             + ",10,10,-1,-1,10,10,-1,10,10,-1,10,10,10,10,10,10,-1,10,10,10"
             + ",10,10,10,10,10,10,-1,-1,10,10,10,-1,-1,10,-1,10,10,10,10,10"
             + ",10,-1,10,-1,-1,-1,10,10,10,10,10,10,10,10,10,-1,10,10,10,10"
             + ",10,10,10,10,10,10,10,10,-1,-1,-1,10,10,-1,10,10,10,10,10,10"
             + ",10,10,10,10,10,10,10,-1,10,10,10,10,-1,10,10,10,-1,10,-1,10"
             + ",10,10,10,10,10,10,10,10,10,10,10,10,10,10,-1,10,10,-1,10,10"
             + ",10,10,10,10,-1,10,-1,10,-1,-1,-1,-1,10,10,10,10,10,-1,10,-1"
             + ",10,10,10,10,10,10,10,10,10,10,10,-1,10,10,-1,-1,-1,10,10,10"
             + ",10,10,10,10,-1,10,-1,10,10,10,10,10,10,10,-1,10,10,10,-1,10"
             + ",10,10,-1,-1,10,10,-1,-1,10,10,-1,10,-1,-1,10,10,10,-1,10,10"
             + ",10,10,10,10,-1,10,10,10,10,10,-1,10,10,-1,10,-1,-1,-1,10,10"
             + ",10,-1,10,10,10,10,10,10,10,-1,-1,-1,10,-1,10,10,10,10,10,10"
             + ",10,-1,10,-1,10,10,-1,-1,10,10,10,10,10,10,-1,10,10,10,10,10"
             + ",10,10,10,-1,-1,10,-1,10,10,10,10,-1,-1,-1,10,10,-1,10,10,10"
             + ",10,10,10,10,-1,10,10,10,-1,10,10,10,10,10,-1,-1,10,10,10,10"
             + ",10,10,10,10,10,10,-1,10,10,10,10,10,10,10,10,10,10,10,10,10"
            ;

            var cells = new List<Cell>();

            foreach (var s in str.Split(','))
            {
                cells.Add(new Cell(int.Parse(s)));
            }

            CellMap = new CellMap<Cell>(20, 20, cells);

            StartPos = new Position(3, 3);
            EndPos = new Position(16, 16);
        }
Пример #6
0
        private void InitData_Type1()
        {
            var str =
                "10,10,10, 7, 7, 7, 7,10,10"
             + ",10,10,10,10,10,10,10,10,10"
             + ",10,10,10,10,10,-1,10,10,10"
             + ",10,10,10,10,-1,10,10,-1,-1"
             + ",10,-1,-1,-1,-1,20,-1,-1,10"
             + ",10,10,-1,10,10,10,15,15,15"
             + ",10,10,-1,10,10,-1,15,15,15"
             + ",10,10,10,-1,-1,15,15,10,15"
             + ",10,10,10,10,10,10,15,15,15"
             ;

            var cells = new List<Cell>();

            foreach (var s in str.Split(','))
            {
                cells.Add(new Cell(int.Parse(s)));
            }

            CellMap = new CellMap<Cell>(9, 9, cells);

            StartPos = new Position(1, 1);
            EndPos = new Position(7, 7);
        }