Ejemplo n.º 1
0
        public void Test_Tell_Pass_Add_Self_Belief_and_Change_Perspective_02()
        {
            var kb = new KB(Name.BuildName("Mark"));

            kb.Tell(Name.BuildName("IsPerson(Self)"), true, Name.BuildName("John(Self)"));

            kb.UpdateKBAccordingToNewPerspective(Name.BuildName("Mary"));

            Assert.Null(kb.AskProperty(Name.BuildName("IsPerson(Mark)"), Name.BuildName("John(Self)")));
            Assert.True((bool?)kb.AskProperty(Name.BuildName("IsPerson(Mary)"), Name.BuildName("John(Self)")));
        }
Ejemplo n.º 2
0
        public void Test_Self_Property()
        {
            var me = (Name)"Ana";
            var kb = new KB(me);

            kb.Tell((Name)"A(B)", Name.SELF_SYMBOL);
            Assert.AreEqual(kb.AskProperty((Name)"A(B)").Value, me);

            me = (Name)"John";
            kb.SetPerspective(me);
            Assert.AreEqual(kb.AskProperty((Name)"A(B)").Value, me);

            kb.Tell((Name)"A(B)", Name.SELF_SYMBOL, (Name)"Ana");
            Assert.AreEqual(kb.AskProperty((Name)"A(B)", (Name)"Ana").Value, (Name)"Ana");
        }
Ejemplo n.º 3
0
        public void Test_AskProperty_Self()
        {
            var kb    = new KB((Name)"John");
            var value = Name.BuildName(kb.AskProperty(Name.SELF_SYMBOL).Value.ToString());

            Assert.AreEqual(value, kb.Perspective);
        }
Ejemplo n.º 4
0
        public Boolean IsFuel(string guid)
        {
            string strEntFuel = "IsFuel(" + guid + ")";
            var    entFuel    = KnowledgeBase.AskProperty((Name)strEntFuel);
            var    fuelQ      = entFuel.Value.ToString();

            return(fuelQ == "True");
        }
Ejemplo n.º 5
0
        public void Test_Tell_Pass_Add_Self_Belief_and_Change_Perspective_02()
        {
            var kb = new KB(Name.BuildName("Mark"));

            kb.Tell(Name.BuildName("IsPerson(Self)"), Name.BuildName(true), Name.BuildName("John(Self)"));

            kb.SetPerspective(Name.BuildName("Mary"));

            Assert.AreEqual(Name.NIL_STRING, kb.AskProperty(Name.BuildName("IsPerson(Mark)"), Name.BuildName("John(Self)")).Value.ToString());

            var  n = kb.AskProperty(Name.BuildName("IsPerson(Mary)"), Name.BuildName("John(Self)"));
            bool b;

            if (!n.Value.TryConvertToValue(out b))
            {
                Assert.Fail();
            }
            Assert.True(b);
        }
Ejemplo n.º 6
0
        public void Test_PrimitiveValuesAsk(string str, object expect)
        {
            Name v     = (Name)str;
            KB   kb    = new KB((Name)"Me");
            var  value = kb.AskProperty(v).Value;

            Assert.NotNull(value);

            Assert.AreEqual(value, Name.BuildName(expect));
        }
Ejemplo n.º 7
0
        public void Test_PrimitiveValuesAsk(string str, object expect)
        {
            Name v     = (Name)str;
            KB   kb    = new KB((Name)"Me");
            var  value = kb.AskProperty(v);

            Assert.NotNull(value);

            var v1 = PrimitiveValue.Cast(value);
            var v2 = PrimitiveValue.Cast(expect);

            Assert.AreEqual(v1, v2);
        }
Ejemplo n.º 8
0
        public void Test_Tell_Pass_Add_With_Perspective(string nativePerspective, string tellPerdicate, string tellPerspective, string queryPerdicate, string queryPerspective)
        {
            var kb = new KB(Name.BuildName(nativePerspective));

            kb.Tell(Name.BuildName(tellPerdicate), true, Name.BuildName(tellPerspective));

            using (var stream = new MemoryStream())
            {
                var formater = new JSONSerializer();
                formater.Serialize(stream, kb);
                stream.Seek(0, SeekOrigin.Begin);
                Console.WriteLine(new StreamReader(stream).ReadToEnd());
            }

            var r = kb.AskProperty(Name.BuildName(queryPerdicate), Name.BuildName(queryPerspective)) as bool?;

            Assert.IsTrue(r);
        }
Ejemplo n.º 9
0
        //public List<int> UnequipapbleTorches;

        //public PreWorldState(KB knowledgeBase, List<int> guidTorches, Pair<string, int> equipped)
        public PreWorldState(KB knowledgeBase)
        {
            //this.UnequipapbleTorches = guidTorches;
            this.KnowledgeBase = knowledgeBase;
            this.Entities      = new List <ObjectProperties>();
            this.Inventory     = new List <Tuple <string, int, int> >();
            this.Equipped      = new List <Pair <string, int> >();
            this.Fuel          = new List <Tuple <string, int, int> >();
            this.Fire          = new List <Tuple <string, int, int> >();

            //Getting Character Stats

            var hp = knowledgeBase.AskProperty((Name)"Health(Walter)");
            int HP = int.Parse(hp.Value.ToString());

            var hunger = knowledgeBase.AskProperty((Name)"Hunger(Walter)");
            //Console.WriteLine(hunger);
            int Hunger = int.Parse(hunger.Value.ToString());
            //Console.WriteLine(Hunger);

            var sanity = knowledgeBase.AskProperty((Name)"Sanity(Walter)");
            int Sanity = int.Parse(sanity.Value.ToString());

            var posx = knowledgeBase.AskProperty((Name)"PosX(Walter)");
            var PosX = int.Parse(posx.Value.ToString());

            var posz = knowledgeBase.AskProperty((Name)"PosZ(Walter)");
            var PosZ = int.Parse(posz.Value.ToString());

            this.Walter = new Character(HP, Hunger, Sanity, PosX, PosZ);

            //Getting Day Properties

            var cycle = knowledgeBase.AskProperty((Name)"World(CurrentSegment)");

            this.Cycle = float.Parse(cycle.Value.ToString());

            var cycleinfo1 = knowledgeBase.AskProperty((Name)"World(PhaseLenght, day)");
            var Cycleinfo1 = int.Parse(cycleinfo1.Value.ToString());

            var cycleinfo2 = knowledgeBase.AskProperty((Name)"World(PhaseLenght, dusk)");
            var Cycleinfo2 = int.Parse(cycleinfo2.Value.ToString());

            var cycleinfo3 = knowledgeBase.AskProperty((Name)"World(PhaseLenght, night)");
            var Cycleinfo3 = int.Parse(cycleinfo3.Value.ToString());

            this.CycleInfo    = new int[3];
            this.CycleInfo[0] = Cycleinfo1;
            this.CycleInfo[1] = Cycleinfo2;
            this.CycleInfo[2] = Cycleinfo3;

            //Getting Entities + Inventory + Equipped

            var subset = new List <SubstitutionSet> {
                new SubstitutionSet()
            };

            //Getting Equipped

            var equippeditems = knowledgeBase.AskPossibleProperties((Name)"IsEquipped([GUID])", Name.SELF_SYMBOL, subset);

            //if (equipped.Item1 != "" && equipped.Item2 == 0)
            //{
            //    foreach (var item in equippeditems)
            //    {
            //        string strEntGuid = item.Item2.FirstOrDefault().FirstOrDefault().SubValue.Value.ToString();
            //        int entGuid = int.Parse(strEntGuid);
            //        string entPrefab = knowledgeBase.AskProperty((Name)("Entity(" + strEntGuid + ")")).Value.ToString();

            //        if (entPrefab == equipped.Item1)
            //        {
            //            string strEntQuantity = "Quantity(" + strEntGuid + ")";
            //            var quantity = knowledgeBase.AskProperty((Name)strEntQuantity);
            //            int entQuantity = int.Parse(quantity.Value.ToString());

            //            Pair<string, int> tuple = new Pair<string, int>(entPrefab, entGuid);
            //            this.Equipped.Add(tuple);
            //            break;
            //        }
            //    }
            //}
            //else if (equipped.Item2 != 0)
            //{
            //    this.Equipped.Add(equipped);
            //}

            foreach (var item in equippeditems)
            {
                string strEntGuid = item.Item2.FirstOrDefault().FirstOrDefault().SubValue.Value.ToString();
                int    entGuid    = int.Parse(strEntGuid);
                string entPrefab  = knowledgeBase.AskProperty((Name)("Entity(" + strEntGuid + ")")).Value.ToString();

                Pair <string, int> pair = new Pair <string, int>(entPrefab, entGuid);
                this.Equipped.Add(pair);
            }

            //Getting Inventory

            var inventory = knowledgeBase.AskPossibleProperties((Name)"InInventory([GUID])", Name.SELF_SYMBOL, subset);

            foreach (var item in inventory)
            {
                string strEntGuid = item.Item2.FirstOrDefault().FirstOrDefault().SubValue.Value.ToString();
                int    entGuid    = int.Parse(strEntGuid);
                string entPrefab  = knowledgeBase.AskProperty((Name)("Entity(" + strEntGuid + ")")).Value.ToString();

                string strEntQuantity = "Quantity(" + strEntGuid + ")";
                var    quantity       = knowledgeBase.AskProperty((Name)strEntQuantity);
                int    entQuantity    = int.Parse(quantity.Value.ToString());

                Tuple <string, int, int> tuple = new Tuple <string, int, int>(entPrefab, entGuid, entQuantity);
                this.Inventory.Add(tuple);

                if (IsFuel(strEntGuid))
                {
                    this.Fuel.Add(tuple);
                }
            }

            //Getting Entities

            var entities = knowledgeBase.AskPossibleProperties((Name)"Entity([GUID])", Name.SELF_SYMBOL, subset);

            foreach (var entity in entities)
            {
                Boolean b             = false;
                string  strEntGuid    = entity.Item2.FirstOrDefault().FirstOrDefault().SubValue.Value.ToString();
                int     entGuid       = int.Parse(strEntGuid);
                string  entPrefab     = entity.Item1.Value.ToString();
                string  realEntPrefab = RealEntityPrefab(entPrefab);

                if (IsFire(entPrefab))
                {
                    string strEntPosx = "PosX(" + strEntGuid + ")";
                    var    POSx       = knowledgeBase.AskProperty((Name)strEntPosx);
                    int    entPosx    = int.Parse(POSx.Value.ToString());

                    string strEntPosz = "PosZ(" + strEntGuid + ")";
                    var    POSz       = knowledgeBase.AskProperty((Name)strEntPosz);
                    int    entPosz    = int.Parse(POSz.Value.ToString());

                    Tuple <string, int, int> tuple = new Tuple <string, int, int>(entPrefab, entPosx, entPosz);
                    this.Fire.Add(tuple);
                }
                else if (realEntPrefab != "" && DistanceCalculator(strEntGuid) > 0)
                {
                    string  strEntIsCollectable = "IsCollectable(" + strEntGuid + ")";
                    var     isCollectable       = knowledgeBase.AskProperty((Name)strEntIsCollectable);
                    Boolean entIsCollectable    = Boolean.Parse(isCollectable.Value.ToString());

                    string  strEntIsPickable = "IsPickable(" + strEntGuid + ")";
                    var     isPickable       = knowledgeBase.AskProperty((Name)strEntIsPickable);
                    Boolean entIsPickable    = Boolean.Parse(isPickable.Value.ToString());

                    string  strEntIsMineable = "IsMineable(" + strEntGuid + ")";
                    var     isMineable       = knowledgeBase.AskProperty((Name)strEntIsMineable);
                    Boolean entIsMineable    = Boolean.Parse(isMineable.Value.ToString());

                    string  strEntIsChoppable = "IsChoppable(" + strEntGuid + ")";
                    var     isChoppable       = knowledgeBase.AskProperty((Name)strEntIsChoppable);
                    Boolean entIsChoppable    = Boolean.Parse(isChoppable.Value.ToString());

                    if (entIsPickable || entIsCollectable || entIsMineable || entIsChoppable)
                    {
                        string strEntQuantity = "Quantity(" + strEntGuid + ")";
                        var    quantity       = knowledgeBase.AskProperty((Name)strEntQuantity);
                        int    entQuantity    = int.Parse(quantity.Value.ToString());

                        string strEntPosx = "PosX(" + strEntGuid + ")";
                        var    POSx       = knowledgeBase.AskProperty((Name)strEntPosx);
                        int    entPosx    = int.Parse(POSx.Value.ToString());

                        string strEntPosz = "PosZ(" + strEntGuid + ")";
                        var    POSz       = knowledgeBase.AskProperty((Name)strEntPosz);
                        int    entPosz    = int.Parse(POSz.Value.ToString());

                        foreach (ObjectProperties objectproperty in this.Entities)
                        {
                            if (objectproperty.Prefab == realEntPrefab)
                            {
                                objectproperty.Add(entQuantity, entPrefab, entGuid, entPosx, entPosz, this.Walter);
                                b = true;
                                break;
                            }
                        }
                        if (!b)
                        {
                            ObjectProperties newObjectproperty = new ObjectProperties(realEntPrefab, entPrefab, entGuid, entQuantity, entPosx, entPosz, entIsCollectable, entIsPickable, entIsMineable, entIsChoppable);
                            this.Entities.Add(newObjectproperty);
                        }
                    }
                }
            }
        }