我编写的第一个程序:聊天机器人。

这是我编写的第一个程序:聊天机器人。

代码如下,非常粗陋。希望大家多多指点,谢谢!

PS:

这个聊天机器人是在看了杨中科老师的视频后做的,思路都是课上杨老师讲的,只是加了一个食谱。本以为看视频的时候都看明白了,之后自己写一遍不会太难。结果出乎我的意料,光DEBUG就花了很长时间。杨老师课上的一句话“程序员不是听课听出来的,也不是看书看出来的,而是编程编出来的”真的太有道理了。

PS:

程序中创建了一个字符串数组"recipeone".eat时如果输入字符串"food"中包含"recipeone"中的某个字符串,就开始eat。

于是就写了:if (food.Contains(recipeone[]))和if (food.Contains(recipeone)),发现都不行,Contains方法不能包含字符串数组。最后无可奈何,用了foreach循环,一个个比一下。不知道有没有更好的办法,希望大家能告诉我,谢谢!

 

PS:

 

我把机器人的类放到类库项目中,主程序一个项目,输入“88”后,

程序执行          MyFirstRobot.die();   //此方法在类库中
                      return;

但是没有立即退出,而是出现了“输入任意键继续。。。”,按任意一个键后控制台退出。

不知道是什么原因,程序里没有Console.ReadKey();啊

 

 namespace oneRobot
{
    class Program
    {
        static void Main(string[] args)
        {
            //构造机器人,名字name:大熊。饥饿值hungerLevel“5”
            RobotOne MyFirstRobot = new RobotOne("大熊", 5);
            Console.WriteLine("你好!");
            //开始聊天
            while (true)
            {

                //饥饿值<0,饿死退出。 0<饥饿值<3,喊饿,进食。
                if (MyFirstRobot.hungerLevel < 0)
                {
                    MyFirstRobot.die();
                    return;
                }
                else if (MyFirstRobot.hungerLevel < 3 && MyFirstRobot.hungerLevel >= 0)
                {
                    MyFirstRobot.hungry();
                    MyFirstRobot.Eat(Console.ReadLine());

                }
               //饥饿值>=3,聊天。输入内容含“88”或“再见”,退出。否则,用chat方法聊天。
                else
                {
                    string input = Console.ReadLine();
                    if (input.Contains("88") || input.Contains("再见"))
                    {
                        Console.WriteLine("886");
                        return;
                    }
                    else
                    {
                        MyFirstRobot.Chat(input);
                    }
                }
            }
        }
    }
    class RobotOne
    {
        //机器人食谱
        public string[] recipeOne = new string[] { "果", "香蕉", "水果", "西瓜", "草莓", "梨", "橘子",
                         "柚子", "荔枝", "甘蔗", "包子", "饺子", "驴肉火烧", "面", "米", "肉", "粥", "蔬菜" };
        string name;
        public int hungerLevel;

        //喊饿方法
        public void hungry()
        {
            Console.WriteLine("饿死啦,我要吃饭");
            hungerLevel--;
        }
        //饿死了。
        public void die()
        {
            Console.WriteLine("饿死了。。。。。");
        }
        //如果输入中包含食谱中的内容,进食。
        public void Eat(string food)                
        {
            foreach (string str in recipeOne)
            {
                if (food.Contains(str))
                {
                    hungerLevel += 3;
                    Console.WriteLine("太好吃了!你是好人");
                    return;
                }
            }
        }
        //聊天。
        public void Chat(string talk)       
        {
            if (talk.Contains("你") && (talk.Contains("名字") || talk.Contains("叫啥") || talk.Contains("是谁")))
            {
                Console.WriteLine("我是最聪明的机器人{0}", this.name);
                hungerLevel--;
            }
            else if (talk.Contains("你好"))
            {
                Console.WriteLine("你好!");
                hungerLevel--;
            }
            else if (talk.Contains("天气") && (talk.Contains("?") || talk.Contains("吗") || talk.Contains("怎么样")))
            {
                Console.WriteLine("天气很好!");
                hungerLevel--;
            }
            else
            {
                Console.WriteLine("听不懂!");
                hungerLevel--;
            }
        }
        //构造函数。初始化机器人的名字,饥饿度。
        public RobotOne(string inputname, int inputhungry)            
        {
            name = inputname;
            hungerLevel = inputhungry;
        }
    }

}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值