2020新春献礼——从零开始制作一款游戏3

2020新春献礼——从零开始制作一款游戏3

全文约2478字,1图,90行代码

关于

《从零开始制作一款游戏》系列是面向编程新手的小程序实例。代码都比较短,所以希望大家能跟着思路一步一步地手动输入代码。不要复制黏贴!——那样只会让这篇文章对你来说毫无意义。除非你已经完全懂得这个代码的原理了
图0.1
图片来源:百度图片

正文

这几天突发奇想要作个死探究一下智能语音助手(比如说Siri)的代码,结果发现我这个䐞䶩根本无从下手。于是就做了一个简单的聊天机器人MIKE。
要实现这个游戏,我们需要:

  1. string类型来储存用户的输入以及查询输入中的关键字,它在string库中。
  2. 为实现一些功能,我们需要更多的库

所以,我们的预处理是这样的:

#include<iostream>
#include<string>
#include<sstream>
#include<ctime> 
#include<cstdlib>
#define M 5
using namespace std;

你可能会不懂M是干嘛用的,别BB,动手写进你的代码!

代码

现在我来告诉你M是干嘛用的,它用来设置每个数组的大小

string greet[M]={"你好少年",
				 "地球人你好",
				 "有啥吩咐?",
				 "请问我问题",
				 "呵呵"}; 				 
string joke[M]={"小明买了一本教人如何快速睡着的书,天天看到天亮。"
	     	    "内蒙古的海军总司令",
				"法官:你为什么要印假钞?\n被告无辜地说:因为我不会印真钞。",
				"贼甲:快数数今天一共抢了多少钱?\n贼乙:不用,明天看看报纸就知道了。",
				"病人:医生,你把剪刀留在我肚子里了。\n医生:没关系,我还有一把。 "};
string story[M]={"从前有座山,山里有座庙……"
	         	"很久很久以前,有一个叫Mike的机器人,他就站在你的面前。"
	            "我喜欢听故事。"
	            "#$@&&@!!*$%^^&%^#^&^&#@U*&^%$%#$%^&*……"
		 		"预知后事如何,且听下回分解。"};
string sorry[M]={"不好意思,我的智商太低听不懂",
				 "让我想想",
				 "这个问题我不准备回答",
				 "无可奉告",
				 "下次再告诉你"};

这就是回答大全,接下来,就是一些功能:

bool allDigits(string s){
	for(int i=0;i<s.size();i++)
		if(s[i]<'0'||s[i]>'9') return 0;
	return 1;
}

void decompose(string s){
	stringstream ss;
	int n,c=0;
	ss<<s; ss>>n;
	if(n<=1) {cout<<n<<"不是质数"<<endl;return;} 
	for(int i=2;i*i<=n;i++)
		while(n%i==0){
			if(c==0) {cout<<i; c++;} 
			else cout<<"*"<<i;
			n/=i;
		}
	if(c==0) cout<<n<<"是个质数"<<endl;
	else if(n>1) cout<<"*"<<n<<endl;
	else cout<<endl;
}

最后是main函数,里面有用户和MIKE的问答以及关键字的抓捕:

int main(){
	cout<<"你好,我是聊天机器人,你可以问我各种问题"<<endl; 
	while(1){
		string s;
		getline(cin,s);
		if(s=="") continue;
		if(s=="88") 
			break; 
		else if(s.find("名")!=-1||s.find("谁")!=-1) 
			cout<<"我的名字叫MIKE,你是我主人"<<endl; 
		else if(s.find("岁")!=-1||s.find("多大")!=-1)
			cout<<"我今年100岁了,我永远不会死"<<endl;	
		else if(s.find("哪")!=-1)	
			cout<<"无处不在"<<endl; 
		else if(s.find("会")!=-1)
			cout<<"我什么都不会,只会聊天"<<endl;
		else if(s.find("生")!=-1)
			cout<<"我生日是2月30日,请送我生日礼物吧"<<endl;
		else if(s.find("智")!=-1)
			cout<<"我的智商为59,还没有及格"<<endl;
		else if(s.find("球")!=-1||s.find("兴")!=-1||s.find("爱")!=-1)
			cout<<"我爱看足球,但是不能踢足球,因为我没有腿"<<endl;
		else if(s.find("笑")!=-1)
			cout<<"我来给你说个笑话吧:"<<endl<<joke[rand()%M]<<endl;
		else if(s.find("事")!=-1)
			cout<<"我来给你讲个故事吧:"<<endl<<story[rand()%M]<<endl;
		else if(s.find("你好")!=-1)
			cout<<greet[rand()%M]<<endl;
		else if(allDigits(s)){
			cout<<s<<"是个好数字"<<endl;
			decompose(s);
		}
        else if(s.find("再见")!=-1)
			cout<<"再见!期待下次的见面"<<endl;
		}
		else 
			cout<<sorry[rand()%M]<<endl;	
	}
	cout<<"再见!期待下次的见面"<<endl;
	return 0;
}
所有的代码就是这样。就写到这里,睡觉去喽。
发布了4 篇原创文章 · 获赞 2 · 访问量 313

猜你喜欢

转载自blog.csdn.net/ccboy522/article/details/104045372
今日推荐