高级语言课程设计猜数字游戏.docx
- 文档编号:2427514
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:27
- 大小:224.94KB
高级语言课程设计猜数字游戏.docx
《高级语言课程设计猜数字游戏.docx》由会员分享,可在线阅读,更多相关《高级语言课程设计猜数字游戏.docx(27页珍藏版)》请在冰点文库上搜索。
高级语言课程设计猜数字游戏
课程设计报告
课程名称高级语言程序设计
课题名称猜数字游戏
目录
第一章本课题所做的工作
第二章程序设计
第一节程序的功能
第二节输入输出的要求
第三节程序模块
第一条模块组成
第二条层次结构
第三条模块调用
第三章分析
第一条模块解释与功能
第四章调试
第一节菜单测试
第二节游戏测试
第一条在自定义中
第二条在随机游戏中
附录源程序
第一章本课题所做的工作
本课题设计一个猜数字游戏,用户根据自己的爱好与兴趣进行随机游戏与自定义游戏,如果用户想自定义一个数字来猜,可以由用户自己进行输入,如果想挑战高难度,用户可以猜测由电脑产生的一个随机数,具体工作有:
系统自动产生一个随机数或用户自己定义一个随机数,制作游戏主菜单,制作游戏继续菜单,设计游戏程序,设计友好的界面提示与帮助。
猜数字游戏
一、问题描述:
该游戏可以由程序随机产生或由用户输入五个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入十次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能:
1、本游戏的菜单:
(1)随机产生数据
(2)用户输入数据
(3)退出游戏
2、游戏成功与否都能返回主菜单
三、算法提示:
1、数据结构:
数组
2、用简单的程序设计方法
第二章程序设计
第1节 程序的功能
该游戏可以由程序随机产生或由用户自定义五个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入十次来匹配上面所输入的数字。
输入正确则为成功,累计十次错误则游戏失败。
游戏成功根据猜测次数给出相应的得分!
该游戏还能自动判断你输入是否有误,如果输入有误,则自动提示您正确的操作。
第2节 输入输出的要求
按提示输入0-9之间的数字进行操作
①输入如:
在菜单页面时
输入1进入游戏;
输入2退出游戏;
输入3进入游戏说明页面;
输入4查看游戏版本及版权;
输入5查看游戏得分榜。
②输出如:
在游戏成功与失败时输出游戏得分与挑战成功与否!
如果当输入的选项出现错误时,则系统输出游戏提示“你输入有误,请确定后重新输入!
”。
第3节 程序模块
第1条 模块组成
本程序分为八个模块,main()主模块,menu()菜单模块,startf()开始模块,save()存储模块,display()排行榜模块,,shuomingf()说明模块,tuichu()退出模块,guanyuf()关于模块。
第2条 层次结构
第3条 模块调用
第三章分析
第1条 模块解释与功能
vmain()--主模块,操作系统的开始与结束运行;
voidmain()/*主函数*/
{
menu();//调用菜单模块进行菜单选择
}
vmenu()--菜单模块,打印菜单选项给游戏者进行选择,进入相应的模块并执行;
vmain()--主模块,操作系统的开始与结束运行;
voidmain()/*主函数*/
{
menu();//调用菜单模块进行菜单选择
}
vmenu()--菜单模块,打印菜单选项给游戏者进行选择,进入相应的模块并执行;
scanf("%d",&k);
switch(k)/*选择项*/
{
case1:
{
system("cls");
startf();//开始游戏
};break;
case2:
{
system("cls");
break;
};break;
case3:
{system("cls");
returnshuomingf();///跳到说明
}
case4:
{
system("cls");
returnguanyuf();//跳到关于
}
default:
{printf("\t\t您的输入有误,请重新输入!
\n");
system("pause");
system("cls");
returnmenu();//返回主菜单
}
vstartf()--开始模块,猜数字游戏开始,游戏者按照自己的意愿来进行游戏,系统对游戏的输入进行判断,真正实现了系统与游戏者完美融合;
scanf("%d",&f);//进行是否自定义选择
switch(f)
{
case0:
//进行随机游戏
srand((int)time(0));/*随机数据的产生*/
n=1+(int)(10000.1*rand()/(RAND_MAX+1.0));
break;
default:
printf("你输入有误,请重新输入!
!
");
system("pause");
case1:
printf("请输入你要自定义的数据\n");
scanf("%d",&n);
break;
}
Do//进行游戏,知道猜对或10次才结束
{
intc;
printf("请输入五个0到9之间的数字,且不重复,如:
12345\n");
scanf("%d",&cs);/*判断随机数据是否合格*/
intt1,g1,s1,b1,q1,A=0,B=0;
//**拆分测试数据**//
t1=cs%10;//个位数
g1=cs/10%10;//十位数
s1=cs/100%10;//百位
b1=cs/1000%10;//千位
{
if(cs<1000)
q1=0;
else
q1=cs/1000;///**拆分测试数据**//
}
intp[5]={q1,b1,s1,g1,t1},i,j;/*比较各位数是否相等*/
if(cs==n)//游戏区//
break;
{
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(p[i]==a[j])
if(i==j)
A++;
else
B++;
m++;//次数累计
system("cls");
printf("\t\t\t%dA%dB,m=%d",A,B,m);
printf("\n");
printf("\n");
}
}
while(m<10);//进行游戏,直到猜对或10次才结束
vphangb()--排行榜模块,进入排行榜查看自己及以往的游戏排行情
vTuichu()--退出模块,退出整个游戏系统;
scanf("%d",&h);
switch(h)//是否退出模块选择
{
case1:
{
system("cls");
menu();//返回主菜单
};break;
case2:
{
system("cls");
break;
};break;
default:
{
system("cls");
printf("您的输入有误,请重新输入!
");//提示报错
returnmenu();
vShuomingf--说明模块(),向游戏者介绍游戏的规则,并提示游戏者如何进行游戏;
vGuanyuf()--关于模块,向游戏者介绍本游戏的版本及版权。
第4章调试
第1节 菜单测试
在主菜单中
输入1:
进入游戏;
输入2:
退出游戏;
输入3:
进入游戏说明;
输入4:
进入关于;
输入5:
进入游戏排行榜;
输入其它数据或按键时:
提示“你输入有误,请重新输入”;
2)在自定义数值中
输入1:
进入自定义,提示请输入你要自定义的数据;
输入0:
进入随机游戏,系统将自动生成数据给游戏者猜;
输入3:
系统报错,提示“你输入有误,请重新输入!
”;
3)在继续菜单中
输入1:
继续进行游戏;
输入2:
退出游戏;
输入3:
系统报错,提示“你输入有误,请重新输入”;
第2节 游戏测试
第1条 在自定义中
自定义:
输入12345
1)第一次12345
结果如下图:
2)第一次127892A0B;
第二次146781A1B;
第三次234560A4B;
第四次356790A2B;
第五次782452A1B;
第六次023653A0B;
第七次453211A4B;
第八次12345
结果如下图:
自定义:
输入12
提示报错,--“是否自定义数值”,直至定义正确;
结果如上图:
第2条 在随机游戏中
随机数据12345
第一次127892A0B;
第二次146781A1B;
第三次234560A4B;
第四次356790A2B;
第五次782452A1B;
第六次023653A0B;
第七次453211A4B;
第八次12345
结果如下图:
附录源程序
#include
#include
#include
#include"math.h"
staticintt;
inta[100];
externstartf();/*外部说明*/
externmenu();/*外部说明*/
externbackf();/*外部说明*/
externtuichu();/*外部说明*/
externshuomingf();/*外部说明*/
externguanyuf();/*外部说明*/
//学生基本信息保存模块
voidSave(intx)
{
FILE*fp;
inti;
a[t]=x;
t++;
fp=fopen("c:
\\youxi.txt","w+");
for(i=0;i { fwrite(&a[i],sizeof(int),1,fp); //每次写一个条录入或一个结构体数组至文件 } if(i>0) { printf("\n完成%d个文件的保存\n",t); system("pause"); } else { system("cls"); printf("\n文件为空,没有保存一个文件\n"); system("pause"); } fclose(fp);//关闭文件 } //显示模块 voiddisplay() { inti; for(i=0;i { printf("\n\t\t\t\t%d",a[i]); printf("\n"); } if(t==0) printf("没有分数"); system("pause"); system("cls"); } //主函数 voidmain()/*主函数*/ { intcount=0; FILE*fp; fp=fopen("d: \\youxi.txt","a+");//保存在c: youxi.txt,以读写创建一个新的文本 if(fp==NULL)//打开头文件失败 { printf("\n文件打开错误! \n"); exit(0); } while(! feof(fp)) { if(fread(&a[count],sizeof(int),1,fp)==1) //一次从文件中读取一条学生信息 count++; } t=count+t; fclose(fp); menu(); printf("\n\n\n\n\n\n\n"); printf("\t\t|*********************************************|\n"); printf("\t\t||\n\n"); printf("\t\t|............欢迎使用...........|\n\n"); printf("\t\t|.........经典猜数字游戏..........|\n\n"); printf("\t\t|...........感谢您的参与.............|\n\n"); printf("\t\t|...............谢谢...................|\n\n"); printf("\t\t|.................^_^...................|\n\n"); printf("\t\t|*********************************************|\n\n"); printf("\n\n\n\n\t\t\t\t\t\t\t\t..徐宏伟编制\n"); } //菜单 intmenu()/*菜单模块*/ { intk; printf("\n\n\n\n\t\t...................猜数字游戏..................\n"); printf("\t\t|***********************************************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***************==>1.开始<==**************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***************==>2.退出系统<==**************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***************==>3.游戏说明<==**************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***************==>4.关于<==**************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***************==>5显示分数<==**************|\n"); printf("\t\t|***************==><==**************|\n"); printf("\t\t|***********************************************|\n"); printf("\t\t|...............................................|\n"); printf("\n\n\n\n"); printf("\t\t请按提示输入: "); scanf("%d",&k); switch(k)/*选择项*/ { case1: { system("cls"); startf(); };break; case2: { system("cls"); break; };break; case3: {system("cls"); returnshuomingf(); } case4: { system("cls"); returnguanyuf(); } case5: { system("cls"); display(); system("pause"); returnmenu(); } default: { printf("\t\t您的输入有误,请重新输入! \n"); system("pause"); system("cls"); returnmenu(); } } } //开始开始 intstartf()/*游戏模块*/ { intn,m=0,g,s,b,q,t,cs,C=0,f;//**cs表示测试数据**// do { printf("是否自定义数值: 1/0(1: 是0: 否)\n"); scanf("%d",&f); switch(f) { case0: srand((int)time(0));/*随机数据的产生*/ n=rand()%(99999-10000+1)+10000;/*n为X~Y之间的随机数*/ //n=1+(int)(10000.1*rand()/(RAND_MAX+1.0)); break; case1: printf("请输入你要自定义的数据\n"); scanf("%d",&n); break; default: printf("你输入有误,请重新输入! ! "); system("pause"); } t=n%10;//个位数 g=n/10%10;//十位数 s=n/100%10;//百位 b=n/1000%10;//千位 { if(n<10000) q=0; else q=n/10000; } } while((g==s)||(g==b)||(g==t)||(g==q)||(s==b)||(s==q)||(b==q)||(n<=124)||(n<=10000));/*随机数据的产生*/ inta[5]={q,b,s,g,t};/*将随机数据重组*/ system("cls"); printf("….欢迎进入猜数字游戏…....\n\n"); printf("\t\t.......A: 数字正确,且位置正确.......\n");/*温馨提示*/ printf("\t\t.......B: 数字正确,但位置错误.......\n"); printf("\t\t.......m: 实验次数.......\n\n"); do { intc; printf("请输入五个0到9之间的数字,且不重复,如: 12345\n"); scanf("%d",&cs);/*判断随机数据是否合格*/ intt1,g1,s1,b1,q1,A=0,B=0; ///**拆分测试数据**// t1=cs%10;//个位数 g1=cs/10%10;//十位数 s1=cs/100%10;//百位 b1=cs/1000%10;//千位 { if(cs<10000) q1=0; else q1=cs/10000;///**拆分测试数据**// } intp[5]={q1,b1,s1,g1,t1},i,j;/*比较各位数是否相等*/ if(cs==n)//游戏区// break; { for(i=0;i<5;i++) for(j=0;j<5;j++) if(p[i]==a[j]) if(i==j) A++; else B++; m++; system("cls"); printf("\t\t\t%dA%dB,m=%d",A,B,m); printf("\n"); printf("\n"); } } while(m<10);//游戏区// { if(m<10||cs==n)//游戏得分情况// { switch(m) { case1: system("cls"); printf("\t\t\t\tscore: 90\n\t\t\t\tsuccess! ! ! \n");Save(90);break; case2: system("cls"); printf("\t\t\t\tscore: 80\n\t\t\t\tsuccess! ! ! \n");Save(80);break; case3: system("cls"); printf("\t\t\t\tscore: 70\n\t\t\t\tsuccess! ! ! \n");Save(70);break; case4: system("cls"); printf("\t\t\t\tscore: 60\n\t\t\t\tsuccess! ! ! \n");Save(60);break; case5: system("cls"); printf("\t\t\t\tscore: 50\n\t\t\t\tsuccess! ! ! \n");Save(50);break; case6: ; case7: system("cls"); printf("\t\t\t\tscore: 30\n");Save(30);break; default: system("cls"); printf("\t\t\t\tyouarewonderful! ! ! \n\t\t\t\tscore: 100\t\t\t\t\n"); Save(100); } } else printf("\t\t\t\tfail\n");//判断胜利与否// } system("pause"); system("cls"); returntuichu(); } //退出退出 inttuichu()/*提示模块*/ { inth; printf("\n\n\n\n\n\n\n"); printf("\t\t.....................猜数字游戏...................\n"); printf("\t\t|********************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言 课程设计 数字 游戏