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

聊天机器人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. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  2. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

  3. 2D、3D形变

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } span.Apple-tab-span { ...

  4. JavaScript实现DOM对象选择器

    目的: 根据传入的选择器类型选出第一个符合的DOM对象. ①可以通过id获取DOM对象,例如 $("#adom"); ②可以通过tagName获取DOM对象,例如 $(" ...

  5. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

  6. GOF23设计模式归类

    创建型模式:-单例模式.工厂模式.抽象工厂模式.建造者模式.原型模式结构型模式:-适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式行为型模式:-模板方法模式.命令模式.迭代器模式 ...

  7. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  8. trigger事件模拟

    事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...

  9. Ubuntu手动设置DSL连接

    在安装完Ubuntu之后,发现图形界面的DSL连接不管用了,郁闷了好几天,想想移动每个月120个小时的流量岂不是白白浪费了.正当我想重返Windows系统的时候,却发现了手动设置连接DSL的好方法,感 ...

  10. Linux.NET学习手记(6)

    各位读者大家好,好长一段时间没有更新文章了,自从参加工作之后,每天等待去做的工作没完没了,个人的时间也变得奢侈起来,今后要尽量从中脱身,抽更多的时间来完成自己想做的事情(希望如此). 言归正传,上一回 ...