Ejemplo n.º 1
0
        public static bool AreTagsBishopsSameColor(InsufficientMaterialTag tag1, InsufficientMaterialTag tag2)
        {
            bool option1 = (tag1 == InsufficientMaterialTag.KingAndBishopsLight)
                           &&
                           (tag2 == InsufficientMaterialTag.KingAndBishopsLight);
            bool option2 = (tag2 == InsufficientMaterialTag.KingAndBishopsDark)
                           &&
                           (tag1 == InsufficientMaterialTag.KingAndBishopsDark);

            return(option1 || option2);
        }
Ejemplo n.º 2
0
        public static bool AreTagsKingAndKnightOrJustKingAndThereforeInsufficient(InsufficientMaterialTag tag1, InsufficientMaterialTag tag2)
        {
            bool option1 = (tag1 == InsufficientMaterialTag.KingAndKnight)
                           &&
                           (tag2 == InsufficientMaterialTag.King
                            &&
                            tag2 == InsufficientMaterialTag.KingAndKnight);
            bool option2 = (tag2 == InsufficientMaterialTag.KingAndKnight)
                           &&
                           (tag1 == InsufficientMaterialTag.King
                            &&
                            tag1 == InsufficientMaterialTag.KingAndKnight);


            return(option1 || option2);
        }
Ejemplo n.º 3
0
        private void gameEndsOnTime(Colors loser)
        {
            InsufficientMaterialTag timeWinnerMaterial = calculateMaterialForOneSide(collectionsOfPiecesOnBoard[(int)getOppositeColor(loser)]);

            bool isTimeWinnerInsuf =
                (timeWinnerMaterial != InsufficientMaterialTag.Sufficient)
                &&
                ((timeWinnerMaterial == InsufficientMaterialTag.King)
                 ||
                 (timeWinnerMaterial == calculateMaterialForOneSide(collectionsOfPiecesOnBoard[(int)loser])));

            if (isTimeWinnerInsuf)
            {
                gameEndsOnDraw("---Draw: Out of time vs. insufficient material---");
                return;
            }

            string losermessage = ((loser == Colors.Black) ? "Black" : "White") + " lost on time!";

            endGameAfterMath[1] = (loser == Colors.Black) ? 2 : 1;
            sendEndGameToUI(losermessage);
        }