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)"))); }
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"); }
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); }
public Boolean IsFuel(string guid) { string strEntFuel = "IsFuel(" + guid + ")"; var entFuel = KnowledgeBase.AskProperty((Name)strEntFuel); var fuelQ = entFuel.Value.ToString(); return(fuelQ == "True"); }
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); }
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)); }
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); }
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); }
//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); } } } } }