示例#1
0
        private static void Disambiguation(this Move move, Square from, IPosition position, StringBuilder sb)
        {
            var simularTypeAttacks = position.GetSimilarAttacks(move);

            var ambiguity = move.Ambiguity(simularTypeAttacks, position);

            if (!ambiguity.HasFlagFast(EMoveAmbiguity.Move))
            {
                return;
            }

            if (!ambiguity.HasFlagFast(EMoveAmbiguity.File))
            {
                sb.Append(from.FileChar());
            }
            else if (!ambiguity.HasFlagFast(EMoveAmbiguity.Rank))
            {
                sb.Append(from.RankChar());
            }
            else
            {
                sb.Append(from.ToString());
            }
        }