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


C# Move.Clone方法代码示例

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


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

示例1: ModifyMove

        /// <summary>
        /// 直前の相手の手を考慮して、与えられた指し手を修正します。
        /// </summary>
        private Move ModifyMove(Move move)
        {
            /*if (move == null || !move.Validate())
            {
                throw new Exception("与えられた指し手が正しくありません。");
            }*/

            using (LazyLock())
            {
                if (this.opponentMove == null)
                {
                    return move;
                }
                
                var newMove = move.Clone();

                // 同○○なら、相手の直前の手と列段を合わせます。
                if (newMove.SameAsOld)
                {
                    newMove.File = this.opponentMove.File;
                    newMove.Rank = this.opponentMove.Rank;
                }
                else if (newMove.File == this.opponentMove.File &&
                         newMove.Rank == this.opponentMove.Rank)
                {
                    newMove.SameAsOld = true;
                }

                return newMove;
            }
        }
开发者ID:leontius,项目名称:Ragnarok,代码行数:34,代码来源:MoveStatistics.cs

示例2: ConvertMove

        /// <summary>
        /// 文字列から得られた指し手から、移動前の情報も含むような
        /// 指し手情報を取得します。
        /// </summary>
        public static BoardMove ConvertMove(this Board board, Move move,
                                            BWType bwType,
                                            bool multipleIsNull = false)
        {
            if (board == null)
            {
                throw new ArgumentNullException("board");
            }

            if (move == null || move.IsResigned)
            {
                return null;
            }

            if (move.SameAsOld && board.PrevMovedSquare == null)
            {
                return null;
            }

            // 移動後の位置を取得します。
            // 同○○なら前回の位置を使います。
            var dstSquare = move.DstSquare;
            if (move.SameAsOld)
            {
                move = move.Clone();
                move.DstSquare = board.PrevMovedSquare;

                dstSquare = board.PrevMovedSquare;
            }

            var boardMoveList = board.ListupMoves(
                move.Piece, bwType, dstSquare)
                .ToList();

            // 複数の指し手の中から適切な一つを選びます。
            var boardMove = FilterBoardMove(boardMoveList, move, multipleIsNull);
            if (boardMove == null)
            {
                return null;
            }

            return boardMove;
        }
开发者ID:JuroGandalf,项目名称:Ragnarok,代码行数:47,代码来源:BoardExtension.cs


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