当前位置:文档之家› C++记忆训练小游戏程序源代码

C++记忆训练小游戏程序源代码

#include <iostream>#include <stdio.h>#include <windows.h> //包涵暂停函数的头文件#include <time.h>using namespace std;int s3,s4;char selec;int time1,time2;class YouXi{public:void score(int score1,int right); //声明战况子函数void welcome(); //声明主菜单界面void number(); //声明数字练习函数void time(); //声明倒计时函数void sellet(); //声明字母选择菜单界面函数void letter(int x); //声明随机生成字母函数void all();void end();private:};int main(){time1=::time(NULL); //记录用户开始时的时间system("cls");YouXi Game;Game.welcome(); //调用主菜单return 0;}void YouXi::welcome() //定义主菜单函数{for(int i=0;i<3;i++){system("cls"); //执行DOS下的清屏命令cout<<"\n\n\n\n\n\n\n\n\n\n\t\t\tloading";for(int j=0;j<10;j++){Sleep(80);cout<<".";}}do{system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t* 欢迎挑战*"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 1.数字记忆*"<<endl; // \n换行,\t水平制表(跳到下一个Tab位置)cout<<"\n\t\t\t* 2.字母记忆*"<<endl;cout<<"\n\t\t\t* 3.键盘记忆*"<<endl;cout<<"\n\t\t\t* 4.退出*"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************************"<<endl;cout<<"\n\t\t\t请选择:";int i;cin>>i;switch(i){case 1:time();number();break;case 2:sellet(); //调用字母选择大小写菜单break;case 3:time();all(); //全键盘练习break;case 4:end();break;default:cout<<"您的输入有误!按任意键继续......";getchar();getchar();}}while(1);}void YouXi::time() //定义倒计时子函数{system("cls");cout<<"\n\n\n\n\n\t\t\t\tloading...\n\n\n\n\n"<<endl;for(int i=0;i<80;i++){cout<<">";Sleep(20);}}void YouXi::number(){int s1=0,s2=1,input,eng; //定义局部变量s1,s2用于随机函数的个数,eng,input随时产生数字与用户入.do{system("cls");srand((unsigned)::time(NULL)); //以当前时间作为随机种子eng=((s1=s1*10+1)+rand()%((s2=s2*10)-s1)); //随机产生一个数s4++; //统计总个数cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住此数字:"<<eng<<endl; //显示此数字Sleep(500);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的数字:";cin>>input;if(input==eng) //判断数字是否相等{s3++; //统计总正确数system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n"<<endl;cout<<"\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\t\t\t输错了,是否继续?(y/n):";cin>>selec;if(selec=='y'||selec=='Y'){s1=s1/10; //恢复错误时的数字个数(例如:随机产生一个五位数,我们输入的与计算机产生的数值不匹配,所以要重新输入5位数与计算机随机产生的数值匹配的关卡,至到输入正确为止)s2=s2/10; //恢复错误时的数字个数(例如:随机产生一个五位数,我们输入的与计算机产生的数值不匹配,所以要重新输入5位数与计算机随机产生的数值匹配的关卡,至到输入正确为止)break;}else if(selec=='n'||selec=='N')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::sellet(){do{system("cls");cout<<"\n\n\n\n\t\t\t********************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 1.大写字母*"<<endl;cout<<"\n\t\t\t* 2.小写字母*"<<endl;cout<<"\n\t\t\t* 3.返回*"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************"<<endl;cout<<"\n\t\t\t请选择:";int i;cin>>i;switch(i){case 1:time(); //调用倒计时子函数letter(1); //调用字母练习子函数(并告诉函数是大写字母)break;case 2:time(); //调用倒计时子函数letter(2); //调用字母练习子函数(并告诉函数是小写字母)break;case 3:welcome(); //调用欢迎界面default:cout<<"您的输入有误!按任意键继续...";getchar();getchar();}}while(1);}void YouXi::letter(int x){int n=1; //初始化循环变量值//int c;char eng[100],input[100]; //用于存放产生的字符串与用户输入的字符串srand((unsigned)::time(NULL)); //以当前时间为种子do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住这个字母:";if(x==1)for(int i=0;i<n;i++){eng[i]=65+rand()%(90-65); //随机产生一个大写字母cout<<eng[i]; //输出一个大写字母}elsefor(int i=0;i<n;i++){eng[i]=97+rand()%(122-97); //随机产生一个小写字母cout<<eng[i]; //输出一个小写字母}eng[n]='\0'; //给数组加一个结束标志s4++; //统计字母总个数Sleep(1000);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的字母:";cin>>input;if(strcmp(eng,input)==0) //比较两个字符串是否相同{s3++; //记录正确个数n++;system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t输错了!是否继续?(y/n):";cin>>selec;if(selec=='y'||selec=='Y')break;else if(selec=='N'||selec=='n')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::all(){int n=1;do{char input[100],eng[100]; //存放全键盘随时产生字符串与用户输入字符串system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请记住这个字符串:";for(int i=0;i<n;i++){eng[i]=33+rand()%(125-33); //随机产生全键盘字符cout<<eng[i];}eng[n]='\0';s4++; //记录总个数Sleep(1000);system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t请输入刚才的字符串:";cin>>input;Sleep(1000);if(strcmp(eng,input)==0) //判断字符串是否相同{s3++;n++;system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t恭喜您!进入下一关!"<<endl;Sleep(600);system("cls");continue;}else{do{system("cls");cout<<"\n\n\n\n\t\t ***************游戏中***************"<<endl;cout<<"\n\n\n\t\t\t输错了!是否继续?(y/n)";cin>>selec;if(selec=='Y'||selec=='y')break;else if(selec=='N'||selec=='n')score(s4,s3); //调用战况子函数}while(1);}}while(1);}void YouXi::score(int score1,int right){time2=::time(NULL); //记录用户结束时时间do{system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t***************************"<<endl;cout<<"\n\t\t\t* ******战况****** *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 总数:"<<score1<<" *"<<endl;cout<<"\n\t\t\t* 正确:"<<right<<" *"<<endl;cout<<"\n\t\t\t* 错误:"<<score1-right<<" *"<<endl;printf("\n\t\t\t* 正确率:%3.0f *",(double)right/score1*100);// cout<<"\n\t\t\t* 正确率:"<<(double)right/score1*100<<" *"<<endl;cout<<"\n\n\t\t\t* 运行时间:"<<time2-time1<<" *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t***************************"<<endl;cout<<"\n\t\t\t确定退出游戏?(y/n):";cin>>selec;if(selec=='y'||selec=='Y')end();else if(selec=='n'||selec=='N')main();}while(1);}void YouXi::end(){system("cls");cout<<"\n\n\n\n"<<endl;cout<<"\n\t\t\t********************"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t* 感谢您的使用! *"<<endl;cout<<"\n\t\t\t* Goodbye! *"<<endl;cout<<"\n\t\t\t* *"<<endl;cout<<"\n\t\t\t********************\n\n\n\n\n\n\n\t\t\t"<<endl;exit(0);}。

相关主题