Пример #1
0
        public string Generator()
        {
            StringBuilder sb = new StringBuilder(7);

            if (this.Actions.Contains(Enums.Action.KingSideCastling))
            {
                sb.Append("O-O");
            }
            else if (this.Actions.Contains(Enums.Action.QueenSideCastling))
            {
                sb.Append("O-O-O");
            }
            else
            {
                sb.Append(this.TargetPosition.ToString());

                if (this.Actions.Contains(Enums.Action.PromoteToQueen))
                {
                    sb.Append("=Q");
                }
                else if (this.Actions.Contains(Enums.Action.PromoteToKnight))
                {
                    sb.Append("=N");
                }
                else if (this.Actions.Contains(Enums.Action.PromoteToBishop))
                {
                    sb.Append("=B");
                }
                else if (this.Actions.Contains(Enums.Action.PromoteToRook))
                {
                    sb.Append("=R");
                }

                if (this.Actions.Contains(Enums.Action.Capture) || this.Actions.Contains(Enums.Action.EnPassant))
                {
                    sb.Insert(0, 'x');
                }
                if (!this.SourceChar.Equals('?'))
                {
                    sb.Insert(0, this.SourceChar);
                }
                sb.Insert(0, Enums.FromPieceTypeToStep(this.PieceType));
            }
            if (this.Actions.Contains(Enums.Action.Check))
            {
                sb.Append('+');
            }
            if (this.GameSide == Enums.GameSide.White)
            {
                sb.Insert(0, ' ').Insert(0, '.').Insert(0, this.Number.ToString());
            }
            return(sb.ToString());
        }