高级语言课程设计猜数字游戏.docx

上传人:b****4 文档编号:11596835 上传时间:2023-03-20 格式:DOCX 页数:27 大小:224.94KB
下载 相关 举报
高级语言课程设计猜数字游戏.docx_第1页
第1页 / 共27页
高级语言课程设计猜数字游戏.docx_第2页
第2页 / 共27页
高级语言课程设计猜数字游戏.docx_第3页
第3页 / 共27页
高级语言课程设计猜数字游戏.docx_第4页
第4页 / 共27页
高级语言课程设计猜数字游戏.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

高级语言课程设计猜数字游戏.docx

《高级语言课程设计猜数字游戏.docx》由会员分享,可在线阅读,更多相关《高级语言课程设计猜数字游戏.docx(27页珍藏版)》请在冰豆网上搜索。

高级语言课程设计猜数字游戏.docx

高级语言课程设计猜数字游戏

 

课程设计报告

课程名称高级语言程序设计

课题名称猜数字游戏

目录

第一章本课题所做的工作

第二章程序设计

第一节程序的功能

第二节输入输出的要求

第三节程序模块

第一条模块组成

第二条层次结构

第三条模块调用

第三章分析

第一条模块解释与功能

第四章调试

第一节菜单测试

第二节游戏测试

第一条在自定义中

第二条在随机游戏中

附录源程序

第一章本课题所做的工作

本课题设计一个猜数字游戏,用户根据自己的爱好与兴趣进行随机游戏与自定义游戏,如果用户想自定义一个数字来猜,可以由用户自己进行输入,如果想挑战高难度,用户可以猜测由电脑产生的一个随机数,具体工作有:

系统自动产生一个随机数或用户自己定义一个随机数,制作游戏主菜单,制作游戏继续菜单,设计游戏程序,设计友好的界面提示与帮助。

猜数字游戏

一、问题描述:

该游戏可以由程序随机产生或由用户输入五个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|********************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1