面向对象版聊天机器人
机器人有不同的名字、维护自己的FullLevel,可以SayHello(我叫***),可以喂食(Eat(int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂的太多撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。
class Program { static void Main(string[] args) { 机器人 J1 = new 机器人();//new 产生一个对象。 J1.Name = "小E";//给J1命名 机器人 J2 = new 机器人();//new 产生一个对象。 J2.Name = "大E";//给J2命名 Console.WriteLine("机器人:你要和哪个机器人聊天呢?请输入【1或2】."); 机器人 J;//创建一个机器人变量 string s = Console.ReadLine();//接收用户输入的字符串 if (s == "1")//判断用户输入的是否为"1"字符串 { J = J1;//J指向“J1指向的对象” } else if (s == "2")//判断用户输入的是否为"2"字符串 { J = J2;//J指向“J2指向的对象” } else//如果用户输入的不是"1"或者"2"则执行下面语句 { Console.WriteLine("机器人:你输入的有误。");//提示 return;//退出程序 } J.SayHello();//调用机器人类的方法. Console.WriteLine("机器人:你要和我聊天吗?");//提示 while (true)//while为真。一直执行 { string sp = Console.ReadLine();//接收用户输入的字符串 J.Speak(sp);//调用机器人类的方法。 } Console.ReadKey();//按任意键退出 } } class 机器人 { public string Name { set; get; } //定义一个属性。一般常用这种属性定义。 private int FullLevel=10;//定义一个 局部整型字段,饥饿程度。 private void Eat(string i)//定义一个局部 “吃”的方法,接收一个字符串, 这个方法仅用于内部使用,外部无须使用。 { int a;//定义一个 整型变量 if (int.TryParse(i, out a))//判断接收的字符串 是否可以转换成整型,并返回一个布尔值。 { int i1 = Convert.ToInt32(i);//将字符串转换成整型 if (i1 < 0 || i1 > 20)//判断输入的值是否符合 { Console.WriteLine("机器人:每次我只能吃1~19个食物。");//提示 } else { FullLevel = FullLevel + i1 + 1;//符合标准就相加。 Console.WriteLine("机器人:吃饱了,你现在还可以提问{0}问题。", FullLevel);//提示 } } else { Console.WriteLine("机器人:你输入的食物有问题。");//输入非法值提示 return;//退出程序 } } public void SayHello()//定义一个 “介绍自己的”方法。 { Console.WriteLine("机器人:我的名字叫:{0}",this.Name);//输出 } public void Speak(string s) //定义一个说的方法。 { if (FullLevel < 0)//判断饥饿程度是不是小于0 { Console.WriteLine("机器人:我饿死了,给我喂点食物吧。");//如果小于0则提示 string wei = Console.ReadLine();//用户输入 this.Eat(wei);//调用Eat方法。 } else//如果大于0则执行下面语句 { if (s.Contains("天气"))//用户输入的字符串是否包含“天气” { if (s.Contains("北京"))//用户输入的字符串是否包含“北京” { Console.WriteLine("机器人:今天北京天气很好。");//为真 则输出。 } else Console.WriteLine("机器人:其他地方的天气我不知道。");//为假 则输出。 } else if (s.Contains("女朋友"))//用户输入的字符串是否包含“女朋友” { Console.WriteLine("机器人:年纪小,不考虑。");//为真 则输出。 } else if (s.Contains("年龄")||s.Contains("岁"))//用户输入的字符串是否包含“年龄”或“岁” { Console.WriteLine("机器人:我永远18岁。");//为真 则输出。 } else { Console.WriteLine("机器人:你说的什么?我听不懂。");//为假 则输出。 } FullLevel--;//每次提问 饥饿自减1 } } }
输出结果: