本文整理汇总了C#中Move.Validate方法的典型用法代码示例。如果您正苦于以下问题:C# Move.Validate方法的具体用法?C# Move.Validate怎么用?C# Move.Validate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Move
的用法示例。
在下文中一共展示了Move.Validate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NormalizeMove
/// <summary>
/// 与えられた指し手が着手可能か調べ、もし着手可能な場合はそれを正式な表記に変換します。
/// </summary>
/// <remarks>
/// 「正式な表記」にするとは、たとえば不要な「打」を削除したり、
/// 右や直などの表記を正確なものに修正することです。
/// </remarks>
public static Move NormalizeMove(this Board board, Move move)
{
if (board == null)
{
throw new ArgumentNullException("board");
}
if (!board.Validate())
{
throw new ArgumentException("board");
}
if (move == null)
{
throw new ArgumentNullException("move");
}
if (!move.Validate())
{
throw new ArgumentException("move");
}
// 投了などの特殊な指し手は常にさせることにします。
/*if (move.IsSpecialMove)
{
return move;
}*/
// 一度、指し手の正規化を行います(打を消したり、左を追加するなど)
// あり得る指し手が複数ある場合は失敗とします。
var bmove = board.ConvertMove(move, true);
if (bmove == null || !board.CanMove(bmove))
{
return null;
}
// 指し手を表記形式に再度変換します。
// 移動元の情報は使いません。("65銀(55)"という表記にはしません)
var newMove = board.ConvertMove(bmove, false);
if (newMove == null)
{
return null;
}
// 最後に元の文字列を保存して返します。
newMove.OriginalText = move.OriginalText;
return newMove;
}