本文整理汇总了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;
}
}
示例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;
}