当前位置: 首页>>代码示例>>C#>>正文


C# Square.Validate方法代码示例

本文整理汇总了C#中Square.Validate方法的典型用法代码示例。如果您正苦于以下问题:C# Square.Validate方法的具体用法?C# Square.Validate怎么用?C# Square.Validate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Square的用法示例。


在下文中一共展示了Square.Validate方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetMoveRangeWithTable

        /// <summary>
        /// テーブルを使用し、指定の相対位置に動けるか調べます。(先手専用)
        /// </summary>
        private IEnumerable<Square> GetMoveRangeWithTable(BWType bwType,
                                                          Square square,
                                                          int[][] table)
        {
            // 後手側なら上下反転します。
            var sign = (bwType == BWType.White ? -1 : +1);

            foreach (var elem in table)
            {
                var sq = new Square(
                    square.File + elem[0],
                    square.Rank + elem[1] * sign);

                if (sq.Validate())
                {
                    yield return sq;
                }
            }
        }
开发者ID:leontius,项目名称:Ragnarok,代码行数:22,代码来源:Board.canmove.cs

示例2: PointToSquare

        /// <summary>
        /// 与えられた座標にあるマスを取得します。
        /// </summary>
        private Square PointToSquare(System.Drawing.Point pos)
        {
            // とりあえず設定します。
            var file = (int)((pos.X - BoardSquareBounds.Left) / SquareSize.Width);
            var rank = (int)((pos.Y - BoardSquareBounds.Top) / SquareSize.Height);

            // 正しい位置にありましぇん。
            var square = new Square(Board.BoardSize - file, rank + 1);
            if (!square.Validate())
            {
                return null;
            }

            /*// 各セルの幅と高さを取得します。
            var gridX = pos.X % this.SquareSize.Width;
            var gridY = pos.Y % this.SquareSize.Height;

            // セルの端ぎりぎりならそのセルにいると判定しません。
            if (gridX < SquareSize.Width * 0.1 || SquareSize.Width * 0.9 < gridX)
            {
                return null;
            }

            if (gridY < SquareSize.Height * 0.1 || SquareSize.Height * 0.9 < gridY)
            {
                return null;
            }*/

            return (ViewSide == BWType.White ? square.Flip() : square);
        }
开发者ID:leontius,项目名称:Ragnarok,代码行数:33,代码来源:GLShogiElement.move.cs

示例3: GetCanMoveRange

        /// <summary>
        /// <paramref name="square"/>にある駒が移動できる
        /// 可能性のある位置をすべて列挙します。
        /// </summary>
        private IEnumerable<Square> GetCanMoveRange(Square square, BWType bwType)
        {
            if (square == null || !square.Validate())
            {
                yield break;
            }

            var piece = this[square];
            if (piece == null || piece.BWType != bwType)
            {
                yield break;
            }

            IEnumerable<Square> list;
            var file = square.File;
            var rank = square.Rank;

            using (LazyLock())
            {
                if (piece.IsPromoted)
                {
                    // 成り駒の場合
                    switch (piece.PieceType)
                    {
                        case PieceType.Gyoku:
                        case PieceType.Hisya:
                        case PieceType.Kaku:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableGyoku);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Kin:
                        case PieceType.Gin:
                        case PieceType.Kei:
                        case PieceType.Kyo:
                        case PieceType.Hu:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableKin);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                    }
                }
                else
                {
                    // 成り駒で無い場合
                    switch (piece.PieceType)
                    {
                        case PieceType.Gyoku:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableGyoku);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Kin:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableKin);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Gin:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableGin);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Kei:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableKei);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Hu:
                            list = GetMoveRangeWithTable(bwType, square, MoveTableHu);
                            foreach (var p in list)
                            {
                                yield return p;
                            }
                            break;
                        case PieceType.Kyo:
                            for (var r = 1; r <= BoardSize; ++r)
                            {
                                yield return new Square(file, r);
                            }
                            break;
                    }
                }

                // 飛車角は成り/不成りに関わらず調べる箇所があります。
//.........这里部分代码省略.........
开发者ID:leontius,项目名称:Ragnarok,代码行数:101,代码来源:Board.canmove.cs

示例4: CanPromote

        /// <summary>
        /// 駒が成れるか調べます。
        /// </summary>
        public static bool CanPromote(Piece piece, BWType bwType,
                                      Square dstSquare, Square srcSquare)
        {
            if (dstSquare == null || !dstSquare.Validate())
            {
                return false;
            }

            // 駒の移動でない場合は成れません。
            if (srcSquare == null || !srcSquare.Validate())
            {
                return false;
            }

            // 既に成っている駒を再度成ることはできません。
            if (piece == null || piece.IsPromoted)
            {
                return false;
            }

            var srcRank = srcSquare.Rank;
            var dstRank = dstSquare.Rank;

            if (bwType == BWType.White)
            {
                srcRank = (BoardSize + 1) - srcRank;
                dstRank = (BoardSize + 1) - dstRank;
            }

            // 1,2,3の段の時だけ、成ることができます。
            if (srcRank > 3 && dstRank > 3)
            {
                return false;
            }

            // 金玉は成れません。
            if (piece.PieceType == PieceType.None ||
                piece.PieceType == PieceType.Gyoku ||
                piece.PieceType == PieceType.Kin)
            {
                return false;
            }

            return true;
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:48,代码来源:Board.cs

示例5: using

        /// <summary>
        /// <paramref name="dstSquare"/> にある駒を取得します。
        /// </summary>
        public BoardPiece this[Square square]
        {
            get
            {
                if (square == null || !square.Validate())
                {
                    return null;
                }

                var rank = square.Rank - 1;
                var file = BoardSize - square.File;

                using (LazyLock())
                {
                    return this.board[rank * 9 + file];
                }
            }
            set
            {
                if (square == null || !square.Validate())
                {
                    throw new ArgumentException("dstSquare");
                }

                var rank = square.Rank - 1;
                var file = BoardSize - square.File;

                using (LazyLock())
                {
                    this.board[rank * 9 + file] = value;
                }
            }
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:36,代码来源:Board.cs

示例6: IsPromoteForce

        /// <summary>
        /// 駒を強制的に成る必要があるか調べます。
        /// </summary>
        public static bool IsPromoteForce(Piece piece, BWType bwType,
                                          Square dstSquare)
        {
            if (dstSquare == null || !dstSquare.Validate())
            {
                return false;
            }

            // 駒の移動元に自分の駒がなければダメ
            if (piece == null || piece.IsPromoted)
            {
                return false;
            }

            var normalizedRank = (
                bwType == BWType.White ?
                (BoardSize + 1) - dstSquare.Rank :
                dstSquare.Rank);

            if (piece.PieceType == PieceType.Kei)
            {
                return (normalizedRank <= 2);
            }
            else if (piece.PieceType == PieceType.Kyo ||
                     piece.PieceType == PieceType.Hu)
            {
                return (normalizedRank == 1);
            }

            return false;
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:34,代码来源:Board.cs

示例7: RemovePieceObject

        /// <summary>
        /// 指定の位置にある駒を削除します。
        /// </summary>
        private void RemovePieceObject(Square square)
        {
            if (square == null || !square.Validate())
            {
                return;
            }

            // 指定のマスにある駒を探します。
            var index = this.pieceObjectList.FindIndex(
                _ => _.Square == square);
            if (index < 0)
            {
                return;
            }

            RemovePieceObject(this.pieceObjectList[index]);
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:20,代码来源:ShogiUIElement3D.move.cs

示例8: GetPieceObject

        /// <summary>
        /// 指定の位置にある駒を取得します。
        /// </summary>
        private PieceObject GetPieceObject(Square square)
        {
            if (square == null || !square.Validate())
            {
                return null;
            }

            return this.pieceObjectList.FirstOrDefault(
                _ => _.Square == square);
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:13,代码来源:ShogiUIElement3D.move.cs


注:本文中的Square.Validate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。