c猜数游戏源代码含登录等
c++猜数游戏源代码(含登录等)/*c++猜数游戏游戏规则:用户有7/6/5次机会猜测0~99的随机数,猜中+10/20/40分,没猜中-10/20/40分。
用户名、密码、分数被保存在文件中。
制作者:LH*/#include <iostream>#include <fstream>#include <string>#include <ctime>using namespace std;class Users{public:Users(); //构造函数,默认分数为0,用户个数为0,首次使用时建立一个文件void zpm(); //主屏幕private:void choose(); //选择void logo();//主图void dl(); //登录void zc(); //注册void yx_e(); //游戏_简单void yx_m(); //游戏_中等void yx_d(); //游戏_困难void gxsj(); //更新数据void choose_level();//选择级别string name; //当前用户名string mima; //当前密码string rmima; //确认密码int score; //当前分数int num; //计数int n; //用户的个数int score0[50]; //用于查找、比较。
下同。
string name0[50];string mima0[50];};Users::Users(){score=0;num=0;ifstream infile("user.dat");if(!infile) //如果打开失败,即文件不存在{ofstream outfile("user.dat"); //建立此文件outfile<<0<<'\n'; //默认用户个数为0outfile.close();}infile.close();}void Users::zpm(){logo();cout<<"游戏规则:\n1.您需要有您的用户名和密码才能登录,如果您是新用户,请注册。
\n"<<"2.游戏开始后,系统将产生一个0~99的随机数,根据您的选择,您有7次或6次或5次的猜测机会。
\n"<<"3.如果猜测错误,游戏将提示“大了”或“小了”。
\n"<<"4.猜对了+10分或+20分或+40分;7次没猜到-10分或-20分或-40分\n\n祝您玩得愉快!\n\n";choose(); //选择}void Users::logo(){system("cls");cout<<"*************************"<<endl;cout<<"* 猜数游戏 *"<<endl;cout<<"*************************"<<endl;cout<<endl;}void Users::choose(){int cho;cout<<"请输入序号进行选择:\n1.直接登录\n2.我先注册\n\n";cout<<"请选择:";do{cin>>cho;if(cho!=1&&cho!=2) cerr<<"您输入的序号有误!\n请重新输入:";}while(cho!=1&&cho!=2);switch(cho){case 1:dl();break;default:zc();break;}}void Users::dl(){logo();cout<<"\n登录\n\n";char c;bool p=false; //true表示登录成功,false表示登录失败ifstream infile("user.dat");if(!infile){cerr<<"很抱歉,读取用户信息失败!"<<endl<<endl;zpm();}infile>>n; //读取用户个数cout<<"请输入您的用户名:";cin>>name;cout<<"请输入您的密码:";cin>>mima;cout<<"请按回车键登录。
\n";system("pause>nul");for(num=0;num<50;num++){infile>>name0[num]>>mima0[num]>>score0[num]; //读取用户信息并存放在数组中if(name==name0[num]&&mima==mima0[num]) //验证用户名和密码是否正确{p=true; //登陆成功score=score0[num]; //读取当前分数cout<<"登陆成功!\n";cout<<endl<<name<<",您目前的分数为:"<<score<<endl; cout<<"请按回车键开始游戏。
\n";system("pause>nul");infile.close();choose_level();break;}}if(p==false) //如果登录失败{infile.close();cerr<<"用户名或密码不正确!\n\n";cout<<"您是否想重新登录?(Y/N)\n请输入Y或N:";do{cin>>c;if(c!='y'&&c!='Y'&&c!='n'&&c!=' N') cerr<<"您的输入有误!\n请重新输入:";}while(c!='y'&&c!='Y'&&c!='n'&&c!=& #39;N');if(c=='y'||c=='Y') {cout<<endl;dl();}else{cout<<"\n您是否想立即注册?(Y/N)\n请输入Y或N:";do{cin>>c;if(c!='y'&&c!='Y'&&c!='n'&&c!=' N') cerr<<"您的输入有误!\n请重新输入:";}while(c!='y'&&c!='Y'&&c!='n'&&c!=& #39;N');if(c=='y'||c=='Y') {cout<<endl;zc();}else exit(1);}}}void Users::zc(){logo();cout<<"\n注册\n\n";char c;int i;ifstream infile("user.dat",ios::in);if(!infile){cerr<<"读取文件信息错误!\n";zpm();}infile>>n; //读取用户个数for(i=0;i<n;i++){infile>>name0[i]>>mima0[i]>>score0[i]; //读取用户信息}ofstream outfile("user.dat");if(!outfile){cerr<<"读取文件信息错误!\n";zpm();}infile.close();cout<<"请填写您的用户名:";cin>>name;do{cout<<"请填写您的密码:";cin>>mima;cout<<"请再次填写您的密码:";cin>>rmima;if(mima!=rmima) cerr<<"两次填写的密码不一致!请重新填写:\n";}while (mima!=rmima);cout<<"注册成功!\n";name0[n]=name;mima0[n]=mima;score0[n]=score;n++;outfile<<n<<'\n';for(i=0;i<n;i++){outfile<<name0[i]<<" "<<mima0[i]<<" "<<score0[i]<<'\n'; //将注册信息存入文件}outfile.close();cout<<"\n您是否想立即登录?(Y/N)\n请输入Y或N:";do{cin>>c;if(c!='y'&&c!='Y'&&c!='n'&&c!=' N') cerr<<"您的输入有误!\n请重新输入:";}while(c!='y'&&c!='Y'&&c!='n'&&c!=& #39;N');if(c=='y'||c=='Y') dl();else exit(1);}void Users::choose_level(){int cho;system("cls");cout<<"\n猜数\n\n";cout<<"请选择游戏级别:\n"<<"1.简单(您有7次机会,赢了+10,输了-10)\n"<<"2.中等(您有6次机会,赢了+20,输了-20)\n"<<"3.困难(您有5次机会,赢了+40,输了-40)\n"<<endl; cout<<"请输入序号选择:";do{cin>>cho;if(cho<1||cho>3) cerr<<"您输入的序号有误!\n请重新输入:"; }while(cho<1||cho>3);switch(cho){case 1:yx_e();break;case 2:yx_m();break;default:yx_d();}}void Users::yx_e() //游戏{system("cls"); //清屏logo();srand((unsigned)time(0)); //用时间作为种子int a=rand()%100,b,c=0; //获取0~99的随机数int cho;do{if(c==0) cout<<"第一次试猜!\n";cin>>b;c++;if(a==b){cout<<"\1猜对了!\1"<<endl;score+=10; //猜对了分数+10break;}if((c==7)&&(b!=a)){cout<<"没猜中!!\2 正确答案是:"<<a<<" \2"<<endl; score-=10; //错了分数-10break;}else if(b<a) cout<<"\2小了!\2"<<endl<<endl;else if(b>a) cout<<"\2大了!\2"<<endl<<endl;if(c==1) cout<<"错了没关系,继续猜!"<<endl;if(c==2) cout<<"失败是成功之母,继续猜!"<<endl;if(c==3) cout<<"才错3次,我们还有4次机会呢!"<<endl;if(c==4) cout<<"再猜一次!"<<endl;if(c==5) cout<<"警告:仅剩余两次机会!"<<endl;if(c==6) cout<<"危险:还剩最后一次机会了!"<<endl;} while((a!=b)&&(c<=7));cout<<"\n您目前的分数为:"<<score<<endl;gxsj(); //更新数据,将目前分数保存到文件cout<<"\n现在您有三种选择:\n1.再玩一次\n2.返回登录界面\n3.退出\n"; cout<<"请输入序号选择:";do{cin>>cho;if(cho!=1&&cho!=2&&cho!=3) cerr<<"您输入的序号有误!\n请重新输入:";}while(cho!=1&&cho!=2&&cho!=3);switch(cho){case 1:cout<<endl;choose_level();break;case 2:cout<<endl;dl();break;default:exit(1);}}void Users::yx_m() //游戏{system("cls"); //清屏logo();srand((unsigned)time(0)); //用时间作为种子int a=rand()%100,b,c=0; //获取0~99的随机数int cho;do{if(c==0) cout<<"第一次试猜!\n";cin>>b;c++;if(a==b){cout<<"\1猜对了!\1"<<endl;score+=20; //猜对了分数+20break;}if((c==6)&&(b!=a)){cout<<"没猜中!!\2 正确答案是:"<<a<<" \2"<<endl; score-=20; //错了分数-20break;}else if(b<a) cout<<"\2小了!\2"<<endl<<endl;else if(b>a) cout<<"\2大了!\2"<<endl<<endl;if(c==1) cout<<"错了没关系,继续猜!"<<endl;if(c==2) cout<<"失败是成功之母,继续猜!"<<endl;if(c==3) cout<<"才错3次,我们还有3次机会呢!"<<endl;if(c==4) cout<<"警告:仅剩余两次机会!"<<endl;if(c==5) cout<<"危险:还剩最后一次机会了!"<<endl;} while((a!=b)&&(c<=6));cout<<"\n您目前的分数为:"<<score<<endl;gxsj(); //更新数据,将目前分数保存到文件cout<<"\n现在您有三种选择:\n1.再玩一次\n2.返回登录界面\n3.退出\n"; cout<<"请输入序号选择:";do{cin>>cho;if(cho!=1&&cho!=2&&cho!=3) cerr<<"您输入的序号有误!\n请重新输入:";}while(cho!=1&&cho!=2&&cho!=3);switch(cho){case 1:cout<<endl;choose_level();break;case 2:cout<<endl;dl();break;default:exit(1);}}void Users::yx_d() //游戏{system("cls"); //清屏logo();srand((unsigned)time(0)); //用时间作为种子int a=rand()%100,b,c=0; //获取0~99的随机数int cho;do{if(c==0) cout<<"第一次试猜!\n";cin>>b;c++;if(a==b){cout<<"\1猜对了!\1"<<endl;score+=40; //猜对了分数+40break;}if((c==5)&&(b!=a)){cout<<"没猜中!!\2 正确答案是:"<<a<<" \2"<<endl; score-=40; //错了分数-40break;}else if(b<a) cout<<"\2小了!\2"<<endl<<endl;else if(b>a) cout<<"\2大了!\2"<<endl<<endl;if(c==1) cout<<"错了没关系,继续猜!"<<endl;if(c==2) cout<<"才错2次,我们还有3次机会呢!"<<endl;if(c==3) cout<<"警告:仅剩余两次机会!"<<endl;if(c==4) cout<<"危险:还剩最后一次机会了!"<<endl;} while((a!=b)&&(c<=5));cout<<"\n您目前的分数为:"<<score<<endl;gxsj(); //更新数据,将目前分数保存到文件cout<<"\n现在您有三种选择:\n1.再玩一次\n2.返回登录界面\n3.退出\n"; cout<<"请输入序号选择:";do{cin>>cho;if(cho!=1&&cho!=2&&cho!=3) cerr<<"您输入的序号有误!\n请重新输入:";}while(cho!=1&&cho!=2&&cho!=3);switch(cho){case 1:cout<<endl;choose_level();break;case 2:cout<<endl;dl();break;default:exit(1);}}void Users::gxsj(){int i;ifstream infile("user.dat");if(!infile){cerr<<"很抱歉,成绩保存失败!"<<endl<<endl;}else{infile>>n;for(i=0;i<n;i++) //读入数据{infile>>name0[i]>>mima0[i]>>score0[i];}infile.close();score0[num]=score; //更改分数}ofstream outfile("user.dat");if(!outfile){cerr<<"很抱歉,成绩保存失败!"<<endl<<endl;}else //保存数据{outfile<<n<<'\n';for(i=0;i<n;i++)outfile<<" "<<name0[i]<<" "<<mima0[i]<<" "<<score0[i]<<'\n';outfile.close();}}int main(){Users use; //定义类对象use use.zpm(); //主屏幕return 0;}。
c程序:三位猜数小游戏
else
putchar('0');
if(num[2]==num[5])
{
putchar('2');
m++;
}
else if(num[1]==num[5]||num[0]==num[5])
putchar('1');
else
putchar('0');
}
if(m==3)
{
printf("\n YOU WIN!\答案是:%d",t); ;
11. 主函数:
函数原型:void main()
功 能:调用各个子函数,实现整体程序的运行
参 数:void
返 回 值: void
要 求:控制整个游戏的顺利进行。
12. 选择菜单函数:
函数原型:voidMenu_select()
功 能:得到Handle_menu的返回值,由一个switch语句选择开始,等级,最佳排行,游戏说明,结束等菜单操作
返 回 值:void
要 求:注意函数的完整性,保证游戏顺利进行,注意没有设置等级时候,默认C=1!
7. 获取系统随机数字函数
函数原型:int*Build_numbersrand((unsigned) time(&)产生1个N位随机数字,供游戏者猜测
参 数:void
printf("如果你猜对数字但没猜对它的位置你会看到1!\n");
printf("如果你都没猜对的话你会看到0!\n");
while(1)
{
num[0]=rand()%9+1;
猜数字游戏源代码
猜数字游戏本案例知识要点●Visual C++ 6.0下创建Win32 Console Application并运行的方法●C++程序中类的定义和实现●C++程序中类文件的引用及类的实例化一、案例需求1.案例描述由计算机产生0到99的随机数,游戏参加者将猜到的数字从键盘输入,计算机对猜数结果进行判断直到猜出正确结果。
2.案例效果图猜数字游戏运行效果如图2-1所示。
3.功能要求(1)所猜0到99的目标数字由计算随机产生。
(2)0到99的随机数的产生、所猜数字和目标数字的比较等过程以类的形式实现。
(3)若游戏参加者所猜数字正确,则提示所猜总次数;若猜数错误,则提示所猜数字比目标数字大还是小。
二、案例分析本案例中设计了一个Guess类,实现产生随机数、进行参加游戏者输入数字与目标数字的比较、计算猜数次数。
主程序中通过类的实例化实现猜数过程。
三、案例设计为了实现猜数过程,设计Guess类,结构如图2-2所示。
●数据成员int Value产生的0到99间的目标数字。
int CompareTimes为游戏者已猜次数。
●函数成员Guess()构造函数,用来产生随机目标数字。
int Compare(int InputValue)用来判断游戏者所猜数字是否正确,其参数InputValue为游戏者所猜数字。
int GetCompareTimes()用来获得游戏者已猜次数。
五、案例实现猜数字游戏源程序代码如下所示。
************************************* // * Guess.h 类声明头文件************************************* #1. #include <time.h>#2. class Guess#3. {#4. private:#5.int Value; //计算机产生的目标数字#6. int CompareTimes; //所猜次数#7. public:#8. Guess(); //构造函数的声明#9. int Compare(int InputValue); #10. int GetCompareTimes();#11. };#12. Guess:: Guess ()//构造函数的实现#13. {#14. CompareTimes=0; //猜数次数置零#15. srand((unsigned)time(NULL)); //产生随机数种子#16. Value=rand()%100;//产生0~99的随机数#17. }#18.int Guess::Compare(int InputValue)//比较猜数是否正确#19. {#20. CompareTimes++; //所猜次数加1 #21. return InputValue-Value;//比较所猜数字和目标数字是否相同,相同//返回0#22. }#23. int Guess::GetCompareTimes()//获得已猜次数#24. {#25. return CompareTimes;#26. }//************************************* //* GuessNumber.cpp 源文件************************************* #1. #include <iostream>#2. #include "Guess.h"//将已定义的类文件包含到主程序文件中#3. using namespace std;#4. int main()#5. {#6. int InputValue;#7.cout<<"\n** 欢迎使用本程序**\n"; #8. for(;;)#9. {#10. char Select;#11. Guess guessobj;//实例化Guess类#12. cout<<"我已经想好数字啦(0~99),请猜吧!\n";#13. for(;;)#14. {#15. int CompareResult; #16. cout<<"\n我想的是:";#17. cin>>InputValue;//获得游戏者输入的所猜数字#18. CompareResult=pare (InputValue);//判断游戏者所猜数字是否正确#19. if(CompareResult==0) //正确#20. {#21. int GuessTimes=guessobj.GetCompareTimes(); #22. cout<<"\n恭喜您,猜对啦!"<<endl <<"您一共猜了"<<GuessTimes<<"次"<<endl;#23. break;#24. }#25. else if(CompareResult>0)#26. {#27. cout<<"\n对不起,您猜的数大啦!\n";#28. }#29. else#30. {#31. cout<<"\n对不起,您猜的数小啦!\n";#32. }#33. }#34. cout<<"\n您还想再玩吗?('n'=No,Others=Yes)\n";#35. cin>>Select;#36. cout<<'\n';#37. if(Select=='n'||Select=='N')#38. {#39. break;#40. }#41. }#42. cout<<"********** 感谢您的使用! **********\n";#43. return 0;#44. }六、案例总结与提高1.案例总结(1)本案例的重点是介绍Visual C++ 6.0下创建并运行一个C++Win32控制台应用程序的基本过程。
c猜数游戏源代码含登录等
c猜数游戏源代码含登录等预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制c++猜数游戏源代码(含登录等)/*c++猜数游戏游戏规则:用户有7/6/5次机会猜测0~99的随机数,猜中+10/20/40分,没猜中-10/20/40分。
用户名、密码、分数被保存在文件中。
制作者:LH*/#include <iostream>#include <fstream>#include <string>#include <ctime>using namespace std;class Users{public:Users(); //构造函数,默认分数为0,用户个数为0,首次使用时建立一个文件void zpm(); //主屏幕private:void choose(); //选择void logo();//主图void dl(); //登录void zc(); //注册void yx_e(); //游戏_简单void yx_m(); //游戏_中等void yx_d(); //游戏_困难void gxsj(); //更新数据void choose_level();//选择级别string name; //当前用户名string mima; //当前密码string rmima; //确认密码int score; //当前分数int num; //计数int n; //用户的个数int score0[50]; //用于查找、比较。
下同。
string name0[50];string mima0[50];};Users::Users(){score=0;num=0;ifstream infile("user.dat");if(!infile) //如果打开失败,即文件不存在{ofstream outfile("user.dat"); //建立此文件outfile<<0<<'\'; //默认用户个数为0 outfile.close();}infile.close();}void Users::zpm(){logo();cout<<"游戏规则:\1.您需要有您的用户名和密码才能登录,如果您是新用户,请注册。
猜数字游戏c程序
字(0<=X<=9)(用空格隔开):");
for(i=0;i<c;i++) scanf("%d",&a2[i]);
break; } } }while(w==1); for(i=0;i<c;i++) for(j=0;j<c;j++) {
束***********************\n");
scanf("%d",&q); switch(q) { case 1: e=1; break; default : e=0; } break; case 2: if(a==c) {
printf("\n\n\n 你上次成绩是%d 分\n",m);
printf("请输入你猜测的%d 位不重复的数字(0<=X<=9)(用空
格隔开):",c);
for(i=0;i<c;i++) {
//输入猜测的数
scanf("%d",&a2[i]); }
do { w=0; for(i=0;i<c-1;i++) { for(j=i+1;j<c;j++)
诉你");ห้องสมุดไป่ตู้
printf ("你猜对了几个数字,\n 包括数值和顺序的信息.\n 如果用
C语言课程设计--猜数字游戏
课程设计报告课程名称C语言程序设计课题名称猜数字游戏专业机械设计及其自造化班级1185班学号201113090516姓名指导教师王颖2 0 1 2年6 月2 2 日湖南工程学院课程设计任务书课程名称C语言程序设计课题猜数字游戏专业班级机械设计1185 班学生姓名学号201113090516指导老师王颖审批王颖任务书下达日期2012 年6 月 1 日任务完成日期2012 年6 月22 日设计课题四:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:1、本游戏显示这样的菜单:(1)随机产生数据(2)用户输入数据(3)退出游戏2、游戏成功与否都能返回主菜单三、算法提示:1、数据结构:数组2、用简单的程序设计方法四、测试数据:测试数据: 3792第一次输入: 12340A2B第二次输入: 56780A1B第三次输入: 08670A1B第四次输入: 97861A1B第五次输入: 17942A0B第六次输入: 27932A2B第七次输入: 37924A0B游戏过关!!!五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
目录第一章绪论 (1)第一节项目背景 (1)第二节本课题所做的工作 (2)第二章需求分析第一节用户需求分析 (3)第二节开发环境分析 (4)第三章程序设计 (5)第一节程序的功能 (5)第二节输入输出的要求 (5)第三节程序模块 (6)第一条模块组成 (6)第二条层次结构 (8)第三条模块调用 (9)第四章分析 (10)第一节模块解释与功能 (10)第五章调试 (14)第一节菜单测试 (14)第二节游戏测试 (16)第一条在自定义中 (16)第二条在随机游戏中 (19)第六章总结 (21)第七章附录 (23)第一节附录A 源程序 (23)第二节附录B 参考文献 (32)课程设计评分表 (33)第一章绪论第一节项目背景C语言一共有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。
C语言程序课程设计-猜数字游戏
C语言程序设计课程设计专业:自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2015年07月21日一.引言1.1设计目的复习和巩固C语言基础知识,进一步加深对C语言的理解和掌握。
提高同学将课本上的理论知识和实际结合的能力,锻炼同学的分析解决实际问题的能力,提高同学团队合作的能力。
使同学们善于观察和思考,善于合作,具备实践编程的基础素质,和实际问题分析的思考方式。
1.2设计要求在设计时充分地分析和理解问题本身,综合考虑系统功能,怎样使系统结构清晰、合理、简单和易于调试。
然后详细设计,确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
最后认真完成课程设计说明书,并对设计方法,结果等进行总结。
充分地分析和理解问题本身,弄清要求做什么(What to do?)。
在确定解决方案框架过程中(How to do?),综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
确定算法的主要流程,在此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。
上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:(1)用一组测试数据手工执行程序;(2)通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
二.基础题2.1题目用选择法对10个数进行排序。
有一个已排好序的数组。
现输入一个数,要求按原来的规律插入到原数组中。
2.2解题思路程序的主要功能是对数组元素用排序函数按从小到大的顺序进行排序。
先定义一个10个元素的一维数组a[10],然后从电脑输入10个数(也就是对数组赋值),然后使用一次fun()函数,对这10个数进行排序;然后再定义一个11个元素的一维数组b[11],同时再从电脑输入一个数同a[10]一起赋值给b[11],然后再使用fun()函数,重新排序的到最后的有顺序的一组数据。
课程设计 猜数字游戏
课程设计报告课程名称C语言程序设计课题名称猜数字游戏专业自动化班级1081班学号201013110111姓名罗超超指导教师王颖2011年6月20日湖南工程学院课程设计任务书课程名称C语言程序设计课题猜数字游戏专业班级自动化1081 班学生姓名罗超超学号201013110111指导老师王颖审批任务书下达日期2011 年6 月13 日任务完成日期2007 年6 月20 日猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:1、本游戏显示这样的菜单:(1)随机产生数据(2)用户输入数据(3)退出游戏2、游戏成功与否都能返回主菜单三、算法提示:1、数据结构:数组2、用简单的程序设计方法四、测试数据:测试数据: 3792第一次输入: 12340A2B第二次输入: 56780A1B第三次输入: 08670A1B第四次输入: 97861A1B第五次输入: 17942A0B第六次输入: 27932A2B第七次输入: 37924A0B游戏成功!!!五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
目录第一章绪论 (6)第一节项目背景 (6)第二节本课题所做的工作 (6)第三章程序设计 (8)第一节程序的功能 (8)第二节输入输出的要求 (8)第三节程序模块 (8)第一条模块组成 (8)第二条层次结构 (9)第三条模块调用 (10)第四章分析 (11)第一条模块解释与功能 (11)第五章调试 (15)第一节菜单测试 (15)第二节游戏测试 (16)第一条在自定义中 (16)第二条在随机游戏中 (17)第六章总结 (19)第七章附录 (20)第一节附录A 源程序 (20)第二节附录B 参考文献 (30)课程设计评分表 (31)第一章绪论第一节项目背景C语言是一种优秀的程序设计语言,其功能丰富,表达能力强,程序执行效率高,可移植性好;C语言既有高级计算机程序设计语言的特点,同时又具有部分汇编语言的特点,因而C语言具有较强的系统处理能力。
c语言编程-猜数字游戏
计算机实习报告面向过程编程用C语言求解实际问题一、问题描述游戏类第15个任务——猜数字游戏任务描述:计算机从0~9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数(0不出现在首位),然后让玩家猜该数。
若玩家猜对该数,游戏则结束;若玩家猜得不对,则计算机告知玩家,数字猜对了且位置也正确的数字有几个;数字猜对了但位置不正确的数字有几个,然后让玩家继续猜。
对每个数玩家最多有m(m>0)次猜的机会。
功能要求:①玩家可自行设置被猜数的位数n和最多猜测机会数m。
②玩家可用键盘输入其所猜数,也可通过鼠标点选数字给出其所猜数。
③当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数,且显示文字要直观、易理解。
例如,正确答案为52467,玩家所猜为53269,则有2个数字(即5和6)数字对位置也对;有1个数字(即2)数字对但位置对。
④玩家猜测m次后仍未猜对,则向玩家公布答案,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑤当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑥玩家可以在游戏进行过程中选择放弃继续猜数。
玩家放弃继续猜数后,询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。
⑦若玩家猜对数字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进一步要求玩家输入用户名;否则,直接退出。
⑧游戏维护一个排行榜,按照猜对一个5位数所用猜测次数由少到多的顺序排序,并在记录完玩家成绩后显示给玩家。
二、需求分析1)猜数字游戏软件的功能有:进入主菜单,输入挑战的次数,输入猜测的数字,若在此次数之内没有猜对,则提示挑战失败,是否继续挑战。
若挑战过程中途放弃,则提示是否继续挑战。
若挑战成功,则提示是否记录成绩,输入用户名,计入排行榜。
排行榜会按照猜测次数由小到大进行排序。
C语言编程猜数游戏代码
一 实现思路1、游戏模块(1)计算机给出四位随机数,要求数字不重复(2)用户从键盘输入四位数,要求与计算机给出的四位数数字和位数均相同(3)每猜一次,提示信息(x ,y ),x 表示位置和数字均相同的个数,y 表示数字相同,位置 不同的个数。
同时,给出得分「基础分1000分,猜错一次-100,猜对+20」(4)h 键作为帮助键,给出更为准确的信息,具体到某个数字是否正确,每使用一次帮助键-100分;k 键作为答案给出键,得分归零,并结束游戏(5)猜对答案后若选择继续游戏将会以你的得分为基础分进行第二轮游戏2、记录模块(1)每次游戏开始之前,将得分最高的前三名显示出来(2)每次游戏结束后,将前三名分值存盘二 流程图三设计细节(1)头文件的说明stdio.h 包含标准输入输出函数定义的头文件stdlib.h 包含最常用系统函数定义的头文件time.h 包含日期和时间函数定义的头文件conio.h包含通过控制台进行数据输入和数据输出函数定义的头文件string.h包含用字符数组函数定义的头文件(2)自定义函数的说明void start():绘制游戏的进入界面intdifferentnumber():判断电脑生成的四位数字是否一样 voidmakenumber():电脑随机产生四位数并存到一个一维数组中voidinputnumber():用户输入一个四位数并把它们分开存入一个数组中void judge():比较两个数组并给出相关提示voidhelph():帮助键hvoid helpk():帮助键kint game():游戏主流程,详见流程图void reclod():记录函数四系统调试出现的问题1、进入judge函数时,没有对初始的*x和*y重新赋值为0,导致x,y的值在做累加,实数对数值偏大。
2、if-else 语句没有在if后加大括号,只执行到if后一条,第二条则不在if语句的管辖范围内,导致if语句出错3、当两个scanf函数连接较密时,应在第二的scanf里加入空格,以清除缓冲区的内容,以便下一次存储数据(如:scanf(” %c”,&ch)4、文件和源代码没有保存在同一地址下,导致打开文件失败5、显示的内容没有看清楚就被清屏函数清屏,在清屏函数前加一个getch()即可五测试数据及测试结果分析图 1 说明游戏规则按任意键开始游戏图 2 输入一个数字给出提示信息和注解图3 按h键获得帮助图4 按k键正确输入密码后可得到答案同时分数归0图5 按k键输入错误密码无法获得答案图 6 猜对后显示分数图7 将成绩与排行榜比较并显示输入y继续游戏输入n结束游戏六总结c语言对于刚接触的学生,会感到很陌生。
猜数字游戏C语言代码
try_time=10;
for(i=0;i<count;i++)
{
int t;
do
{
t=rand()%10;
}while(i==0 && t==0);
if(flag[t]==0)
{
a[i]=t;
flag[t]=1;
}
else i--;
}
printf("\n∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽\n");
if(sumA==4)
{
printf("\n恭喜你!猜对了!!\n
printf("\n恭喜你!你的成绩能进入积分榜!\n");
printf("请输入你的姓名:");
printf("请输入0返回上级菜单:");
scanf("%d",&n);
do
{
printf("∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽\n");
printf("请输入选择: ");
scanf("%d",&n);
if(n==0)
{
printf("\n\n感谢您的使用,游戏退出!\n");
exit(0);
}
if(n==2){ printf("\n\n上次的成绩为:%d\n",u);
do
{
printf("输入0返回上级菜单:");
scanf("%d",&n);
system("pause");
