基于控制台的简单版的聊天机器人,词库可以自己添加。

聊天机器人1.0版本

源码如下:

using System;
using System.Collections.Generic;
using System.Text; namespace 面向对象聊天机器人1
{
class Program
{
static void Main(string[] args)
{
机器人 r1 = new 机器人();
r1.Name = "小I";
r1.Eat();
r1.SayHello();
while (true)
{
string str = Console.ReadLine();
r1.Speak(str);
}
}
}
class 机器人
{
public string Name { get; set; } private int Fullevel { get; set; }//饥饿的程度自己知道,所以应该设为私有的属性。 public void SayHello()//可以说话
{
Console.WriteLine("\t\t【机器人】你好,我叫{0},很高兴认识你!", Name);
}
public void Eat(int foodCount)
{
if (Fullevel > )
{
return;
}
Fullevel = Fullevel + foodCount;
} public void Speak(String str)
{
if (Fullevel <= )
{
Console.WriteLine("\t\t【机器人】饿死了,别问了,我不说了!");
return;
}
if (str.Contains("姓名") || str.Contains("名字") || str.Contains("谁") || str.Contains("你好"))
{
this.SayHello();//类的方法调用同类的另外一个方法
}
else if (str.Contains("女朋友"))
{
Console.WriteLine("\t\t【机器人】年龄小,不考虑!");
}else if (str.Contains("创造") )
{
Console.WriteLine("\t\t【机器人说】是星云创造的我。"); }else if(str.Contains("逗比"))
{
Console.WriteLine("\t\t【机器人】你才是逗比,你一家人都是逗比!"); }else if (str.Contains("呵呵"))
{
Console.WriteLine("\t\t【机器人】嘻嘻"); }else if (str.Contains("。。。"))
{
Console.WriteLine("\t\t【机器人】。。。。"); }
else if (str.Contains("擦"))
{
Console.WriteLine("\t\t【机器人】你要擦什么?"); }else
{
Console.WriteLine("\t\t【机器人】听不懂!");
}
Fullevel--;
}
}
}

运行截图:



聊天机器人2.0版本,可选择聊天机器人。

源码如下:

using System;
using System.Collections.Generic;
using System.Text; namespace 面向对象聊天机器人2
{
class Program
{
static void Main(string[] args)
{
机器人 r1 = new 机器人();
r1.Name = "小I";
r1.Eat(); 机器人 r2 = new 机器人();
r2.Name = "小J";
r2.Eat();
Console.WriteLine("请选择机器人,1——>小I,2——>小J");
机器人 r;
string str =Console.ReadLine();
if(str =="")
{
r=r1;//r指向r1指向的对象
}
else
{
r=r2;
}
r.SayHello();
while (true)
{
string str1 = Console.ReadLine();
r.Speak(str1);
}
}
}
class 机器人
{
public string Name { get; set; } private int Fullevel { get; set; }//饥饿的程度自己知道,所以应该设为私有的属性。 public void SayHello()//可以说话
{
Console.WriteLine("\t\t【机器人】你好,我叫{0},很高兴认识你!", Name);
}
public void Eat(int foodCount)
{
if (Fullevel > )
{
return;
}
Fullevel = Fullevel + foodCount;
} public void Speak(String str)
{
if (Fullevel <= )
{
Console.WriteLine("\t\t【机器人】饿死了,别问了,我不说了!");
return;
}
if (str.Contains("姓名") || str.Contains("名字") || str.Contains("谁") || str.Contains("你好"))
{
this.SayHello();//类的方法调用同类的另外一个方法
}
else if (str.Contains("女朋友"))
{
Console.WriteLine("\t\t【机器人】年龄小,不考虑!");
}else if (str.Contains("创造") )
{
Console.WriteLine("\t\t【机器人说】是星云创造的我。"); }else if(str.Contains("逗比"))
{
Console.WriteLine("\t\t【机器人】你才是逗比,你一家人都是逗比!"); }else if (str.Contains("呵呵"))
{
Console.WriteLine("\t\t【机器人】嘻嘻"); }else if (str.Contains("。。。"))
{
Console.WriteLine("\t\t【机器人】。。。。"); }
else if (str.Contains("擦"))
{
Console.WriteLine("\t\t【机器人】你要擦什么?"); }else
{
Console.WriteLine("\t\t【机器人】听不懂!");
}
Fullevel--;
}
}
}

运行结果:

3.C#面向对象基础聊天机器人的更多相关文章

  1. C#面向对象基础01

    面向对象不是取代面向过程的类.对象."人"是类,"张三"是人这个类的对象.类是抽象的,对象是具体的.按钮就是类,某个按钮就是对象.对象可以叫做类的实例.类就像i ...

  2. AI中台——智能聊天机器人平台的架构与应用(分享实录)

    内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...

  3. 用 AIML 开发人工智能聊天机器人

    借助 Python 的 AIML 包,我们很容易实现人工智能聊天机器人.AIML 指的是 Artificial Intelligence Markup Language (人工智能标记语言),它不过是 ...

  4. 学习笔记TF059:自然语言处理、智能聊天机器人

    自然语言处理,语音处理.文本处理.语音识别(speech recognition),让计算机能够"听懂"人类语音,语音的文字信息"提取". 日本富国生命保险公司 ...

  5. 【自然语言处理篇】--Chatterbot聊天机器人

    一.前述 ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学(jiyi)习(pipei). 二.具体 1.安装 是的,安装超级简单, ...

  6. Tensorflow搞一个聊天机器人

    catalogue . 前言 . 训练语料库 . 数据预处理 . 词汇转向量 . 训练 . 聊天机器人 - 验证效果 0. 前言 不是搞机器学习算法专业的,3个月前开始补了一些神经网络,卷积,神经网络 ...

  7. 用Go语言实现一个简单的聊天机器人

    一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...

  8. 计算机网络课设之基于UDP协议的简易聊天机器人

    前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...

  9. SAP成都研究院飞机哥: SAP C4C中国本地化之微信聊天机器人的集成

    今天的文章仍然来自Jerry的老同事,SAP成都研究院的张航(Zhang Harry).关于他的背景介绍,请参考张航之前的文章:SAP成都研究院飞机哥:程序猿和飞机的不解之缘.下面是他的正文. 大家好 ...

随机推荐

  1. CLR 这些年有啥变化吗?

    引言 首先想给初学者推荐下<CLR via C#>这本好书,做.Net开发的开发者应该都读一下.为避免广告之嫌,所以这里只提供豆瓣书评的链接. CLR 作为.Net 程序跨平台运行的载体, ...

  2. ExtJS 4.2 业务开发(二)数据展示和查询

    本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...

  3. 一个表缺失索引发的CPU资源瓶颈案例

    背景 近几日,公司的应用团队反应业务系统突然变慢了,之前是一直比较正常.后与业务部门沟通了解详情,得知最近生意比较好,同时也在做大的促销活动,使得业务数据处理的量出现较大的增长,最终系统在处理时出现瓶 ...

  4. SDWebImage源码解读之SDWebImageCache(上)

    第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...

  5. Android Studio切换为eclipse的快捷键之后还是有区别的部分快捷键

    Android Studio Eclipse 把代码提示换成了Class Name Completion, 快捷键是Ctrl+Alt+Space(空格键). 代码提示快捷键Alt+/,         ...

  6. Java实现多线程断点下载(下载过程中可以暂停)

    线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配. ...

  7. TCP的数据传输小结

    TCP的交互数据流 交互式输入 通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行) 经受时延的确认 通常TCP在接受到数据时并不立即发送ACK: ...

  8. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》

    ---------------------------------------------------------------------------------------------------- ...

  9. ubuntu安装mysql

    好记性不如烂笔头,记录一下,ubuntu安装mysql的指令. 安装MySQL: sudo apt-get install mysql-server sudo apt-get install mysq ...

  10. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...