Example #1
0
        // ********************************************************* UCZENIE SYMBOLICZNE *******************************************************************************************
        public bool recognizeBouncingBetty(Frame.Shape?shape, Frame.Colour?colour, Frame.Material?material,
                                           Frame.Hardness?hardness, Frame.Weight?weight, Frame.Size?size, bool hasLight, bool makesSound)
        {
            Frame.BouncingBetty bouncingbetty = new Frame.BouncingBetty();

            if (colour == bouncingbetty.colour || colour == null)
            {
                if (material == bouncingbetty.material || material == null)
                {
                    if (weight == bouncingbetty.weight || weight == null)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #2
0
        public void Recognize(Frame.Explosive explosive)
        {
            Frame.BouncingBetty bouncingbetty    = new Frame.BouncingBetty();
            Frame.C4            c4               = new Frame.C4();
            Frame.Claymore      claymore         = new Frame.Claymore();
            Frame.Dynamite      dynamite         = new Frame.Dynamite();
            Frame.Semtex        semtex           = new Frame.Semtex();
            Frame.Explosive     unknownExplosive = new Frame.Explosive();

            bool isBouncingBetty, isC4, isClaymore, isDynamite, isSemtex,
                 recBouncingBetty = false, recC4 = false, recClaymore = false, recDynamite = false, recSemtex = false;

            if (chromosome.GetGenes() != null)
            {
                foreach (KeyValuePair <String, bool> gene in chromosome.GetGenes())
                {
                    if (gene.Key == "recBouncingBetty" && gene.Value)
                    {
                        recBouncingBetty = true;
                    }
                    if (gene.Key == "recC4" && gene.Value)
                    {
                        recC4 = true;
                    }
                    if (gene.Key == "recClaymore" && gene.Value)
                    {
                        recClaymore = true;
                    }
                    if (gene.Key == "recDynamite" && gene.Value)
                    {
                        recDynamite = true;
                    }
                    if (gene.Key == "recSemtex" && gene.Value)
                    {
                        recSemtex = true;
                    }
                }
            }

            //TODO: Zaimplementować logikę: za każdym razem,
            //      przy przeszukiwaniu pola jeden parametr ładunku (losowo)
            //      będzie zakrywany (będzie przyjmował wartość null)

            isBouncingBetty = recognizeBouncingBetty(explosive.shape,
                                                     explosive.colour, explosive.material,
                                                     explosive.hardness, explosive.weight,
                                                     explosive.size, explosive.hasLight,
                                                     explosive.makesSound);
            if (isBouncingBetty && recBouncingBetty)
            {
                minefield.fields[GetX(), GetY()].explosive = bouncingbetty;
                return;
            }

            isC4 = recognizeC4(explosive.shape,
                               explosive.colour, explosive.material,
                               explosive.hardness, explosive.weight,
                               explosive.size, explosive.hasLight,
                               explosive.makesSound);
            if (isC4 && recC4)
            {
                minefield.fields[GetX(), GetY()].explosive = c4;
                return;
            }

            isClaymore = recognizeClaymore(explosive.shape,
                                           explosive.colour, explosive.material,
                                           explosive.hardness, explosive.weight,
                                           explosive.size, explosive.hasLight,
                                           explosive.makesSound);
            if (isClaymore && recClaymore)
            {
                minefield.fields[GetX(), GetY()].explosive = claymore;
                return;
            }

            isDynamite = recognizeDynamite(explosive.shape,
                                           explosive.colour, explosive.material,
                                           explosive.hardness, explosive.weight,
                                           explosive.size, explosive.hasLight,
                                           explosive.makesSound);
            if (isDynamite && recDynamite)
            {
                minefield.fields[GetX(), GetY()].explosive = dynamite;
                return;
            }

            isSemtex = recognizeSemtex(explosive.shape,
                                       explosive.colour, explosive.material,
                                       explosive.hardness, explosive.weight,
                                       explosive.size, explosive.hasLight,
                                       explosive.makesSound);
            if (isSemtex && recSemtex)
            {
                minefield.fields[GetX(), GetY()].explosive = semtex;
                return;
            }

            minefield.fields[GetX(), GetY()].explosive = unknownExplosive;
            return;
        }