Esempio n. 1
0
        public EGFlags getEndGameFlags()
        {
            EGFlags feg = default;

            if (isAlone(Side[Black]))
            {
                feg |= EGFlags.BlackAlone;
            }
            if (isAlone(Side[White]))
            {
                feg |= EGFlags.WhiteAlone;
            }

            if ((feg & EGFlags.KingAlone) == 0)
            {
                if (isKQvKPEndgame())
                {
                    feg |= EGFlags.KQvKP;
                }
            }
            else if (RectPiece == 0)    // No Rooks or Queens
            {
                feg |= EGFlags.OutsideSquare;
                var bWhiteAttacking = (feg & EGFlags.BlackAlone) != 0;
                var attacker        = getSide(bWhiteAttacking);
                if (isKBNvKEndgame2(attacker))
                {
                    feg |= EGFlags.KBNvK;
                }
            }

            return(feg);
        }
Esempio n. 2
0
        public static String FormatFlags(
            ModeFlags fmd, DrawFlags fdr, EGFlags feg, HiFlags fBlackHi, HiFlags fWhiteHi, LoFlags flo)
        {
            if (fmd == 0 && fdr == 0 && feg == 0 && fBlackHi == 0 && fWhiteHi == 0 && flo == 0)
            {
                return("None");
            }

            var sBlackHi         = FormatFlags(fBlackHi);
            var sWhiteHi         = FormatFlags(fWhiteHi);
            var sBlackHiLabelled = IsNullOrEmpty(sBlackHi) ? Empty : $"Black[{sBlackHi}]";
            var sWhiteHiLabelled = IsNullOrEmpty(sWhiteHi) ? Empty : $"White[{sWhiteHi}]";

            const Int32 nCapacity = 4;
            var         sFlags    = new List <String>(nCapacity)
                                    .AddNotEmpty(FormatFlags(fmd))
                                    .AddNotEmpty(FormatFlags(fdr))
                                    .AddNotEmpty(FormatFlags(feg))
                                    .AddNotEmpty(sBlackHiLabelled)
                                    .AddNotEmpty(sWhiteHiLabelled)
                                    .AddNotEmpty(FormatFlags(flo));

            return(Join(sSpace, sFlags));
        }
Esempio n. 3
0
        public static String FormatFlags(EGFlags feg)
        {
            var en = egFlags.Where(f => (f & feg) != 0);

            return(Join(sSpace, en));
        }