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

合集下载

2048小游戏代码解析C语言版

2048小游戏代码解析C语言版

2048⼩游戏代码解析C 语⾔版2048⼩游戏,也算是风靡⼀时的益智游戏。

其背后实现的逻辑⽐较简单,代码量不算多,⽽且趣味性强,适合作为有语⾔基础的童鞋来加强编程训练。

本篇分析2048⼩游戏的C 语⾔实现代码。

前⾔游戏截图:游戏实现原理:使⽤终端图形库⽂件curses 绘制终端⾥的图形。

使⽤⼀个⼆维数组保存4 x 4 空格中的变量。

键盘输⼊控制移动,经过逻辑判断,⼆维数组数据变化。

⼆维数组数据变化后交给图形函数显⽰出来。

库⽂件curses 介绍:curses 是⼀种终端图形绘制库,利⽤curses 可以在终端中绘制多种图形。

简单demo深⼊学习请查询相关资料。

#include <stdio.h>#include <curses.h>int main(){initscr();border(0,0,0,0,0,0,0,0);move(5,15);printw("%s","hello world");refresh();char ch=getch();endwin();return 0;}编译:gcc curses_demo.c -lcurses2048实现代码分析根据2048实现原理,代码要实现的主要有三件事:图形绘制游戏逻辑操作图形加载逻辑结果主程序代码如下:2048 C语⾔版代码分析//-------------头⽂件--------------------//#include <stdio.h>#include <stdlib.h>#include <curses.h>#include <time.h>#include <unistd.h>#include <signal.h>//--------------------------------------////------------------全局变量-------------------------------// 游戏主界⾯是⼀个 4*4 的 16 宫格,使⽤⼆维数组进⾏表⽰,⽤ 0 表⽰空格int a[4][4] = {0};// 16 宫格中空格的个数int empty;// 涉及到新产⽣的数字的位置的两个变量int old_y, old_x;//所有的C语⾔代码就是在这三个函数中int main(){//初始化函数init();//游戏运⾏时函数play();//结束函数,清屏//endwin()来关闭 curses 模式.endwin();return0;}main()函数代码分析头⽂件+全局变量头⽂件中包含的库⽂件如下:<stdio.h> 标准输⼊输出<stdlib.h> 设计到内存操作函数<curses.h> 绘制图形库⽂件<time.h> 时间函数<unistd.h> 睡眠函数库⽂件<signal.h> 信号相关操作库⽂件主函数代码主函数中共有三个⼦函数,其中复杂的为前两个,第三个为curses关闭的函数,没有任何逻辑。

记忆游戏代码

记忆游戏代码
{
while(true)
{
reset();
memoryThread.suspend();
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
testPattern(cellX,cellY);
checkMove=false;
return true;
}
private void testPattern(int x,int y)
{
int[] nextMatch=pattern[next++];
if(nextMatch[0]==x&&nextMatch[1]==y)
if(resetting || !checkMove)
{
return true;
}
int cellX=x/cellWidth;
int cellY=y/cellHeigth;
if(cellX==currentX && cellY==currentY)
repaint();
currentX=cellX;
currentY=cellY;
checkMove=true;
return true;
}
public boolean mouseDrag(Event evt,int x,int y)
{
private static final int sleepTimeDecrement=100;
private static final int initialPatternLength=4;

Python入门教学---记忆训练小游戏

Python入门教学---记忆训练小游戏

教学设计环境分析程序安装提问:同学通过游戏的参与,是否能够判断该游戏是使用什么语言编写的?再次执行小游戏的运行程序,提醒学生仔细观察、并思考问题。

板书学生回答答案,并总结归纳,推出正确答案Python提问:既然现在知道是Python语言编写的程序代码,那同学如何在自己的电脑上安装Python语言的运行环境呢?同学们试着利用搜索引擎完成Python语言程序的安装。

提示:利用百度搜索“Python菜鸟入门教程”寻堂指导部分学生,解决遇到各种问题。

观看游戏演示思考问题回答问题(预测学生会有各种类型的答案)利用搜索引擎搜索Python入门教程,下载安装程并完成程序安装。

了解程序基础运行方式程序安装过程出现各种问题思考、解决、提问引导学生思考分析疏导学生自主学习通过网络学会自学学会相互交流学习锻炼学生自我判断问题、解决问题的能力粉笔麦克7’软件运行简单编程讲述:大部分同学都已经完成了程序的安装,并在进行摸索如何使用。

演示:程序运行观看演示练习使用软件5’活动清单程序代码:import randomimport timeimport osprint(“你好,现在你有10秒钟的时间记忆下列物品及其偏好”)things = [“苹果”,“香蕉”,“橙子”,“梨子”,“猕猴桃”,“柚子”,“菠萝”,“彩蛋”,“电脑”,“手机”] for i in range (10):print(i,“:”,things[ i ])time.sleep(10)os.system(“cls”)n=0t2=random.sample(things,5)for i in t2:ans=int(input(i + “的编号是:”))if i==things[ans]:n=n+1print(“\n你一共答对了”,n,“道题”)input(“\n按回车键结束”)活动清单:程序代码:。

纸牌记忆小游戏C语言源代码

纸牌记忆小游戏C语言源代码

#include<stdio.h>#include<stdlib.h>#include<time.h>int outputacard(int a,int b) //输出一张扑克{if(b==11){printf("[%c",a); //Jprintf("%c]",b+63);}else if(b==12){printf("[%c",a); //Qprintf("%c]",b+69);}else if(b==13){printf("[%c",a); //Kprintf("%c]",b+62);}else if(b==1){printf("[%c",a); //Aprintf("%c]",b+64);}else if(b==88)printf("[%c%c]",a,b); //XXelse{printf("[%c",a); //随机输出8张扑克printf("%d]",b);}}int main(){int puke[8][2];int i,j,k;srand((unsigned int)time(NULL));printf("记住下面牌的顺序\n准备好了按<回车>,我会提问你的^-^\n");for(i=0; i<8; i++)for(j=0; j<2; j++){if(j==0)puke[i][j]=3+rand()%3; /*红心是003 方块004 梅花005 黑桃006*/elsepuke[i][j]=1+rand()%12; //A……K}for(k=0; k<8; k++)outputacard(puke[k][0],puke[k][1]); //随机输出8张扑克printf("\n");int puke2[8][2];int puke0[2];int t,rh;for(t=0; t<8; t++){puke2[t][0]=puke[t][0];puke2[t][1]=puke[t][1];}for(t=0; t<8; t++) /*把上面的8张扑克打乱顺序存入另一个数组*/{rh=rand()%7;if(rh!=t){puke0[0]=puke2[t][0];puke0[1]=puke2[t][1];puke2[t][0]=puke2[rh][0];puke2[t][1]=puke2[rh][1];puke2[rh][0]=puke0[0];puke2[rh][1]=puke0[1];}}for(k=0; k<8; k++)outputacard(puke2[k][0],puke2[k][1]); /*打乱顺序后重新输出8张扑克*/printf("\n");int puke3[8][2],puke4[8][2];for(i=0; i<8; i++) /*为把上面代表两组扑克的数组puke,puke2复制到另外*/for(j=0; j<2; j++) /*两个数组puke3、puke4中,以方便后面输出*/for(j=0; j<2; j++){puke3[i][j]=88;puke4[i][j]=88;}system("pause");system("CLS");int a,b,num=0;int alp1[8]= {0,0,0,0,0,0,0,0},alp2[8]= {0,0,0,0,0,0,0,0}; /* 记录各个位置的牌是否翻开*/while(alp1[0]==0||alp1[1]==0||alp1[2]==0||alp1[3]==0||alp1[4]==0||alp1[5]==0||alp1[6]==0||alp1[7]==0){printf("依次输入第一行、第二行两张相同的牌的位置\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");scanf("%d%d",&a,&b);num++;system("CLS");if(puke[a-1][0]==puke2[b-1][0]&&puke[a-1][1]==puke2[b-1][1]&&alp1[a-1]!=1&&alp2 [b-1]!=1&&a>=1&&a<=8&&b>=1&&b<=8){/*如果两张牌相同且没有被翻开过且输入的数字大于0小于8复制puke,puke2中这两个元素的数据到puke3,puke4中,并输出puke3,puke4*/puke3[a-1][0]=puke[a-1][0];puke3[a-1][1]=puke[a-1][1];alp1[a-1]++;puke4[b-1][0]=puke2[b-1][0];puke4[b-1][1]=puke2[b-1][1];alp2[b-1]++;printf("猜对了,厉害!\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");system("pause");system("CLS");}else if(alp1[a-1]!=1&&alp2[b-1]!=1&&a>=1&&a<=8&&b>=1&&b<=8){/*如果两张牌不相同但没有被翻开过且输入的数字大于0小于9输出原puke3,puke4并显示该位置正确的牌*/printf("你好像记错了,再想想,我相信你!\n");for(i=0; i<8; i++){if(i==a-1)outputacard(puke[i][0],puke[i][1]);elseoutputacard(puke3[i][0],puke3[i][1]);}printf("\n");for(k=0; k<8; k++){if(k==b-1){outputacard(puke2[k][0],puke2[k][1]);}elseoutputacard(puke4[k][0],puke4[k][1]);}printf("\n");system("pause");system("CLS");}else if(a>=1&&a<=8&&b>=1&&b<=8) /*如果这两张牌中任意一张已经被翻开,输出如下*/{printf("这两张牌中的某一张好像已经被你翻开了哦\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");system("pause");system("CLS");}else{printf("每行只有8张牌呦,请输入正确的位置,么么哒\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]); printf("\n");system("pause");system("CLS");}}printf("你一共猜了%d次\n",num);if(num==8)printf("完美!!!\n");else if(num>8&&num<=10)printf("非常棒!\n");else if(num>10&&num<=16)printf("你的记忆力挺不错的!\n");elseprintf("你的记忆力一般般啦,再练练吧!\n"); system("pause");return 0;}。

cc++小游戏源代码

cc++小游戏源代码

cc++⼩游戏源代码翻到开学之初写的⼀些⼩游戏,陆续给⼤家发出来,也便提⾼新⼿们的编程兴趣。

(已详细注释)⼏个对应头⽂件需要注意⼀下,但不必太过恐慌,因为,,,很多,⽤的时候找需要的即可(在Dev,codeblocks,VC上都能运⾏)#include<stdio.h>#include<time.h>#include<stdlib.h>#include<conio.h>#include<windows.h> //下⾯Sleep()函数的头⽂件#include<mmsystem.h>void menu(){printf(" *****************************\n");printf(" *****************************\n");printf(" ************1.play***********\n");printf(" ************0.exit***********\n");printf(" **********2.chakan***********\n");printf(" *********3.qingkong**********\n");printf(" *****************************\n");printf("请选择: \n");}void game(){system("cls");system ( "color 33" ); //设置颜⾊FILE *fp;if((fp=fopen("D:\\caishuziyou.txt","a+"))==NULL){printf("open file error\n");return ;}int rand_num=rand()%100;int tmp=0,t=0;while(1){int flag=0;printf("请输⼊你要猜的数字:");scanf("%d",&tmp);if(tmp>rand_num){printf("猜⼤了!\n");flag=0;}if(tmp<rand_num){printf("猜⼩了!\n");flag=0;}if(tmp==rand_num){printf("正确!恭喜!\n");printf("共⽤了%d次\n",t+1);FILE *fp;fp=fopen("D:\\caishuziyou.txt","w");if(fp==NULL){printf("create file failed\n");return ;}fprintf(fp,"%d",t+1);fclose(fp);break;}if(flag==0) t++;printf(" 你再猜:\n");}printf("\n按任意键返回⽬录");getch();}void menu2(){system("cls");system ( "color B6" ); //设置颜⾊printf("即将登陆系统\n");getch();for(int t=3;t>=1;t--){system("cls");printf("%d",t);Sleep(700);system("cls");}}void chakan(){system("cls");system ( "color E0" ); //设置颜⾊int t=0;FILE*fp;if((fp=fopen("D:\\caishuziyou.txt","r"))==NULL){printf("can not to open the file!\n");exit(0);}while(fscanf(fp,"%d",&t)!=EOF)//若不到⽂件结尾则继续{printf("此玩家共进⾏了%d次\n",t);}printf("\n按任意键返回⽬录");getch();}void qk()//清空{FILE *fp;system("cls"); //清屏函数,不管下⾯是否保存数据,每次输⼊新数据是屏幕上只能有此次的数据 system ( "color C0" ); //设置颜⾊if((fp=fopen("D:\\caishuziyou.txt","w"))==NULL){printf("open file error\n");return;}fclose(fp);printf("\n按任意键返回!");getch();}int main(){int input=0;srand((unsigned)time(NULL));do{//while(1)//{system("cls");menu();// printf("请选择:");scanf("%d",&input);switch(input){case 1:menu2();game();break;case 2:chakan();break;case 3:qk();break;case 0:exit(0);break;default:printf("输⼊错误!请重新输⼊!");}//}}while(input);return 0;}C语⾔⾥⽐较重要的知识也就⽂件、指针、链表、结构体和数组了,本⽂⽤的⽂件希望⼤家能将知识化为⼰⽤。

翻牌游戏在Unity开发环境下使用C开发的翻牌记忆小游戏

翻牌游戏在Unity开发环境下使用C开发的翻牌记忆小游戏

翻牌游戏在Unity开发环境下使用C开发的翻牌记忆小游戏Unity是一款广泛应用于游戏开发的跨平台游戏引擎,而翻牌记忆游戏是一款经典的休闲益智游戏。

本文将介绍如何在Unity开发环境下使用C语言来开发一款翻牌记忆小游戏的具体过程。

一、准备工作在开始开发之前,我们首先需要确保安装了Unity开发环境以及一些必要的插件。

打开Unity,创建一个新的项目,并在Unity Asset Store中搜索并导入合适的卡牌素材资源。

二、创建游戏场景在开始创建游戏场景之前,我们需要先为我们的游戏选择一个合适的背景。

在Unity中,选择一个适合的背景是非常重要的,可以增强游戏的可玩性和娱乐性。

选择好背景后,我们可以通过点击Unity编辑器中的“GameObject”选项,选择“3D Object”中的“Plane”来创建一个平面。

然后,将该平面拉伸到合适的尺寸,并将其作为游戏场景的底板。

三、创建卡牌接下来,我们需要创建卡牌。

在Unity中,可以通过在游戏场景中创建一个新的立方体对象,并为其添加合适的纹理来实现卡牌的显示效果。

首先,创建一个新的立方体对象,并将其位置设置在底板上方的合适位置。

然后,为该立方体对象添加一个自定义的纹理,该纹理将作为卡牌的正面。

在添加好纹理后,我们需要为该立方体对象编写脚本,以实现卡牌的翻转效果。

通过使用C语言编写脚本,我们可以监听玩家的点击事件,当玩家点击卡牌时,将该卡牌翻转到背面。

四、实现游戏逻辑在完成卡牌的创建和翻转后,我们需要实现游戏的具体逻辑。

在翻牌记忆游戏中,玩家需要记住每张卡牌的位置和对应的图片,在一定时间内翻开并匹配相同的卡牌。

为了实现这一逻辑,我们可以编写一个脚本来管理卡牌的翻转、匹配和显示结果等功能。

在编写脚本时,我们可以借助Unity的API来实现卡牌的动画效果、计时器的设置以及对匹配结果的判断。

脚本编写完成后,我们可以将其添加到游戏场景中的所有卡牌对象上,以实现对每张卡牌的操作和管理。

C语言小游戏源代码

C语言小游戏源代码
这涉及有没有解的问题
不管怎么样,九格游戏最后的结果只有两个:
123 | 123
456 | 456
78 | 87 (证明从略)
而要两两交换而始终有解的话,(从原序列开始)必须:相邻交换的次数为偶
但我们用一种更有效的方法:
每一个总与其下第二个交换.
第7,8个与0,1交换,只要交换次数多,仍可获得相同的效果.
}
}
int isSuccess(){ /*判断是否游戏*/
int i,ret=1;
for(i=0;i<8;i++)
ret=ret&&(num[i]==(i+1));
return ret;
}
int GetTheNull(){ /*获得空格的位置*/
if (num[j+i*3]!=0)
printf("\324\315\315\315\315\274");
else
printf(" ");
}
printf("\n");
把光标移动到屏幕的x(1~80),y(1~25/50)处*/
/*和clrscr():清屏*/
int num[]={1,2,3,4,5,6,7,8,0}; /*方块的数字*/
main(){
char key=0; /*键盘码*/
int pos; /*九格中,空格的位置*/
a=random(8); /*产生随机数*/
b=(a+2)%8; /*得到下第二个的数组下标*/
change(a,b); /*交换*/
}

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);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#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);}。

相关文档
最新文档