状态判断
2022-04-09

               
一、文字形式的状态:
(1)具体的句子:
我饿了,所以吃饭。这样说话太抽象,应该具体问题具体分析:
教:如果我在家,我饿了,所以自己做饭
教:如果我在外面,我饿了,所以餐馆吃饭
如果句就是条件。对于同样的提问(我饿了),条件不同(在家或在外面),回答就不同。
教:我在家
问:我饿了
答:自己做饭。
有了“我在家”这个条件约束,就会回答“自己做饭”,而不是回答餐馆吃饭,否则默认回答餐馆吃饭。
注意1:带“如果”二字的句子,只表示假设,不表示事实条件。例如前面教了“如果我在家”,还需要另外单独再教“我在家”。也就是说,不带“如果”二字,才算满足“我在家”这个事实条件。
注意2:人们一般的说话习惯“如果我在家,我饿了,自己做饭。”此句中少了连接词“所以”,提问就无法回答。

当然也可以不做条件限定,就是没有“如果”二字的条件限定句。
例如教:我饿了,所以吃饭
问:我饿了
答:吃饭

(2)抽象的句子:
教:如果食肉动物饿了,食肉动物看见食草动物,所以食肉动物吃食草动物
教:狼是食肉动物,羊是食草动物
教:狼饿了
问:狼看见羊
答:狼吃羊
既然告诉了电脑狼是食肉动物,那么教狼饿了,在狼与羊的关系句中,就等于教了“食肉动物饿了”这个条件,也就表示满足此条件,从而能回答。

二、数字形式的状态:
每个对象(事物)都有多个属性(对象的状态、对象拥有的物品数量)。
属性的三种操作:前提条件,后果影响,自动触发。
(1)前提条件:
输入:心情大于60,体力大于40,去公园
下次再输入去公园,如果心情小于60,或体力小于40,那么“去公园”这件事就无法执行,电脑会回答不满足条件。
要知道心情是多少,在对象分析栏目下可以查看。
(2)后果影响
输入:写作业,心情减20
现在心情已经减了20,以后每次输入写作业,心情都会减20
那么现在再输入去公园,就无法执行了,因为心情减20后,心情不足60了,不符合去公园的前提条件。
输入:玩游戏,心情加30
以后每次输入“玩游戏”,心情都会加30。现在心情恢复到60以上了,再输入去公园,又可以执行了(电脑回答这个我知道,而不是回答不满足条件)。
(3)自动触发
输入:心情小于10,自动触发睡觉
注意:在事件前写“自动触发”四个字,才算是自动触发。
以后只要心情发生变化,且变化到10以下,就会自动执行事件“睡觉”。也就是说,只有刚刚改变了的属性,才会自动判断是否自动触发事件。否则即便满足自动触发的条件,也不会触发事件,这是为了避免频繁的自动触发。
由于现在心情还大于10,不能自动触发“睡觉”。那么反复输入写作业,每输入一次,心情就减20。直到心情减到10以下时,就会自动执行“睡觉”。

说明1:心情、体力等就是对象的属性。用户可以自定义属性:用户输入的话语中,如果出现了表中没有的属性,就会自动添加为新属性。那么新创建的属性的初始值是多少?最初话语里属性后面的数字就作为初始值。
说明2:前面输入的话语(心情大于60)里,并没有对象。其实省略对象,默认就是指电脑阿玉。
要指定对象应该这样写:猫的心情大于60,猫的心情加20。就是说明对象的属性。
说明3:可以一次写多个前提条件,或多个后果影响。
如果写了多个前提条件(逗号隔开),就必须全部满足,才算满足条件。
如果写了多个后果影响(逗号隔开),每个影响都会执行。
说明4:前提条件操作符:大于、小于、等于、为。例如心情大于50。
后果影响操作符:加、减、为。例如心情减10。
说明5:如果一个数值,上限是100,应在数值后面加星号*,例如心情大于30*,表示心情的最大上限是100。如果超过100,按100算。再例如体力加40*,表示属性体力的最大上限为100。如果不加星号,则不设上限。属性的最小值低于0时,按0算。

商店系统:在虚拟世界的商店,阿玉给自己买东西
首先输入:去商店
背景图片为商店的情况下,才可以买东西
输入:买XX
例如输入买苹果,属性的物品就会增加苹果,如果已经有苹果,苹果数量加1。
虚拟商店中,每件物品都是10元。阿玉的金钱数量,会因为买东西而减少。阿玉的金钱数量也会每天补充,最大上限为1000。
输入不含买字的话语,就自动离开商店。
切换场景,还可以输入:回家、去学校。

查找对象的属性和对象的事件:
对象分析栏目下,有查找对象,输入对象名称。
如果之前教过:猫的心情大于90,猫玩耍。而且前面已经教过关于猫的事件(例如猫吃鼠),那么查找对象猫,就会显示猫的属性和事件。