栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++课程设计——猜谜语小游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++课程设计——猜谜语小游戏

一、问题描述

二、项目流程图 

三、解题思路与源码 

        题目可以分为三部分,根据自己的想法又增添了增加了主页面,设有开始游戏、退出游戏和游戏规则供用户选择。

void menu();			//主菜单函数 
void quit();			//退出函数 
void rule();			//规则函数
1、第一部分 
  • 创建一个谜语类 Riddle,包含谜面,谜底,谜底所属类别这三个公有数据成员。由于字符串数组处理过于复杂,这里使用了在 C++ 中可以表示字符串数据类型的 string 定义谜面、谜底和谜底所属类别。
class Riddle{
public:
	string type;    	//谜底所属类别 
	string poser;   	//谜面 
	string key;     	//谜底 
	string tip1;		//一级提示 
	string tip2;		//二级提示 
	Riddle(string a,string b,string c,string d):poser(a),key(b),tip1(c),tip2(d){}
};
  • 使用外部文件存储相关的信息。在外部建立了以 ANSI 编码的文本文档储存相关数据。为了方便打开外部文件时使用的是相对地址,而非绝对地址,这样程序或文档每次移动位置后就不需再修改地址。 

2、第二部分 
  • 创建一个猜谜语游戏类Game,功能为随机产生谜面内容。要想随机产生谜面内容,首先要使用随机数发生器的初始化函数 srand() 函数给谜面设置一个随机数,为了之后得到的随机数不一样,在这里又使用 time(0) 与之结合,因为无法准确地确定题库里的题数,所以定义了一个整型变量 n 来表示,通过循环可算出,接着 rand() 函数随机产生的谜面内容。
class Game{
public:
	int star();
private:
	string str1;		//str1谜面  
	string str2;		//str2谜底
	string str3;		//str3一级提示 
	string str4;		//str4二级提示    
};
 
int Game::star(){
	srand(time(0)); 						//给谜面设置随机数 
    int n=0;                            	//n存储谜语的个数
    
    ifstream fin;
  	fin.open("猜谜语.txt");					//打开外部文件 (相对地址)
   	if(!fin){
	   cout<<"文件打开失败!";
	   return 0;
	}
   	while(fin){								//成功打开外部文件 
    getline(fin,str1);
    n++;									//获得谜语个数
	}                                   	
    fin.close();							//关闭外部文件 

	while(1){
    	fin.open("猜谜语.txt");
    	int num=rand()%n;               	//随机产生谜面内容
    	for(int i=0;i');				//读入谜面 
    	getline(fin,str2,'-');				//读入谜底 
    	getline(fin,str3,'~');				//读入一级提示 
    	getline(fin,str4);					//读入二级提示 
 
   		Riddle g(str1,str2,str3,str4);      //根据读入的数据生成对象
 3、第三部分
  •  在类 Game 里增加判断答案功能。使用了一个大 while 循环产生题目,一般用 if 语句判断答案正误,但考虑到只有回答正确才会进入下一题,而回答错误就需要再次答题,并且有可能是无限次的答题,于是使用了小 while 循环去判断答案正误,若正确则跳出此次循环进入下一次大循环(下一题)。若错误则在小循环内多次循环答题,整型变量 j 记录答题次数。
  • 题目要求在类 Game 里增加多级提示功能。于是设置多个 if 语句判断答题次数,根据用户答题次数进入对应的 if 语句。用户答错超过3次就有2次提示,第4次答题时给第1个提示,第5次答题时给第2个提示,从第6次答题开始不再有提示,但用户可选择出谜底进入下一题。 
    	while(1){							//大循环产生题目 
			int j=0; 						//整型变量j记录答题次数 
        	cout<>str2;j++;
        	while(str2!=g.key){ 			//小循环判断回答是否正确
        		if(j<3){
        			cout<<"哎呀!猜错了!(⊙﹏⊙)n请继续输入答案:";
                	cin>>str2;j++;
				}else if(j==3){											    //多级提示之一级提示 
					cout<<"                   ∧_∧"<>str2;j++; 
				}else if(j==4){											    //多级提示之二级提示 
					cout<>str2;j++;
				}else if(j>4){
					cout<>e;
					while(e!='0'&&e!='1'){								    //如果是整型输入字母就会进入死循环 
						fflush(stdin); 									    //清空输入缓冲区
						cout<<"你输入的不是1或0,请重新输入!"<>e;
					}
					if(e=='0'){	
						fflush(stdin); 									    //清空输入缓冲区
						cout<>str2;j++;
					}
					if(e=='1'){
						fflush(stdin); 									    //清空输入缓冲区
						cout<<"谜底是:"< 
4、第四部分  
  • 主菜单页面
int main()
{
	menu();				//显示主页面 
    return 0;
}

void menu()          	//主页面 
{
	cout<>f; 
	while(f!='1'&&f!='2'&&f!='3'){			//如果是整型,输入字母就会进入死循环 
		fflush(stdin); 						//清空输入缓冲区
		cout<<"输入的不是1、2或3,请重新输入!"<>f;
	}
    if(f=='1'){
    	fflush(stdin); 			//清空输入缓冲区
    	system("cls");			//清屏
    	p.star();				//调用star(),开始游戏 
    }else if(f=='2'){ 
    	fflush(stdin); 			//清空输入缓冲区
		system("cls");  		//清屏  
		quit();					//调用quit(),显示退出页面 
	}else if(f=='3'){
		fflush(stdin); 			//清空输入缓冲区
		system("cls");			//清屏
		rule();					//调用rule(),显示规则页面
	}
} 
  •  退出游戏页面
void quit()						//退出页面 
{
	cout<>h;
	while(h!='8'&&h!='6'){			//如果是整型,输入字母就会进入死循环
		fflush(stdin); 				//清空输入缓冲区 
		cout<<"输入的不是8或6,请重新输入!"<>h;
		}
    	if(h=='8'){	 
    		exit(0);				//退出游戏
		}else if(h=='6'){
			fflush(stdin); 			//清空输入缓冲区
			system("cls");			//清屏
    		menu();	
		}							//返回主页面 
}
  •  游戏规则页面
void rule()							//规则页面 
{
	cout<>k;
	while(k!='6'){				 //如果是整型,输入字母就会进入死循环 
		fflush(stdin); 			 //清空输入缓冲区
		cout<<"输入的不是6,请重新输入!"<>k;
	}
	if(k=='6'){
		fflush(stdin); 			//清空输入缓冲区
		system("cls");			//清屏
		menu();					//返回主页面 
	}	
} 
四、 结果展示 

源码 + 报告下载:https://download.csdn.net/download/weixin_48968649/85740425

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号