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

上传人:b****3 文档编号:4890129 上传时间:2022-12-11 格式:DOCX 页数:13 大小:28.29KB
下载 相关 举报
C高级语言程序设计猜数字游戏.docx_第1页
第1页 / 共13页
C高级语言程序设计猜数字游戏.docx_第2页
第2页 / 共13页
C高级语言程序设计猜数字游戏.docx_第3页
第3页 / 共13页
C高级语言程序设计猜数字游戏.docx_第4页
第4页 / 共13页
C高级语言程序设计猜数字游戏.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

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

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

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

《高级语言程序设计》课程设计

说明书

设计题目:

猜数字游戏

 

目录

1.游戏说明、、、、、、、、、、、、、、、、、、、、、、、、、、1

2.程序的模块组成、、、、、、、、、、、、、、、、、、、、2

3.程序流程、、、、、、、、、、、、、、、、、、、、、、、、、、2

4.程序源清单、、、、、、、、、、、、、、、、、、、、、、、、2

5.课程设计总结、、、、、、、、、、、、、、、、、、、、、、、19

 

课题:

猜数字游戏

说明:

每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜

基本功能:

       1.用户注册

       2.用户积分查看

游戏流程设计思路:

.新游戏

退出游戏

用户积分查看

注册用户

进入游戏1

 

给出提示

与真确答案比较

输入数字

开始游戏

继续或退出游戏

答案真确

1

答案错误

设计思路:

1.程序的模块组成:

主函数、、、、、、、、、、、、intmian

创立结构体、、、、、、、、structrecord

定义数组、、、、、、、、、、charname[]

清除文本模式窗口、、system("cls")

2.程序流程:

分别用void定义开始界面display,操作函数sys(inta),记录文件recwrite(),浏览界面vdisplay(),读取文件recread(),开始游戏newgame(),判断并增加记录addrec()。

在用intmian主函数调用。

srand((unsigned)time(NULL),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。

3程序源清单:

#include

#include

#include

#include

#include2

 

structrecord

{

charname[10];

intsorce;

}rec;

intnum;//输入的数字

voiddisplay();//开始界面

voidxuanze();//选择函数

voidsys(inta);//操作函数

voidzhuce();//用户注册

voidnewgame();//新游戏

voidvdisplay();//浏览记录界面

intqushu();//取数函数

inttishi(intaa);//提示函数

voidaddrec();//判断并且增加记录

voidrecread();//读取记录文件

voidrecwrite();//写入记录文件

voidmain()3

{

display();

}

voiddisplay()//开始界面

{

system("cls");//清屏

printf("============================================\n");

printf("================数字竞猜游戏================\n");

printf("============================================\n");

printf("\n");

printf("1:

新游戏\n");

printf("\n");

printf("2:

注册用户\n");

printf("\n");

printf("3:

用户积分查看\n");

printf("\n");4

printf("4:

退出\n");

printf("\n");

printf("============================================\n");

xuanze();

}

voidxuanze()//选择函数

{

inta;

printf("请输入你所选择的操作数:

\n");

scanf("%d",&a);

if(a==1||a==2||a==3||a==4)

{

sys(a);

}//选择相应的操作数执行函数

else

{

printf("错误的操作数!

\n");;

printf("\n");

printf("请按任意键继续...\n");

getchar();5

getchar();

display();

}

}

voidsys(inta)//操作函数

{

switch(a)

{

case1:

newgame();break;

case2:

zhuce();break;

case3:

vdisplay();break;

case4:

exit(0);break;//退出

}

}

 

voidzhuce()

{

system("cls");

printf("请输入你的名字\n");

scanf("%s",&rec.name);6

recwrite();//写入

printf("恭喜!

注册成功!

\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

 

voidrecwrite()//写入记录文件

{

FILE*fp;

fp=fopen("E:

\\rec.rec","wb");

if(fp==NULL)

printf("写入失败!

\n");

fwrite(&rec,sizeof(structrecord),1,fp);

fclose(fp);

}

 

voidvdisplay()//浏览记录界面

{7

system("cls");//清屏

printf("============================================\n");

printf("================数字竞猜游戏================\n");

printf("====================积分====================\n");

recread();

printf("\n");

printf("姓名:

%s:

分数%d\n",rec.name,rec.sorce);

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

voidrecread()//读取记录文件

{

FILE*fp;8

L:

fp=fopen("E:

\\rec.rec","rb");

if(fp==NULL)

{

recwrite();

gotoL;//初始化

}

if(fread(&rec,sizeof(record),1,fp)==1)

{

}

else

{

printf("文件读取失败!

");

}

fclose(fp);

}

 

voidnewgame()//新游戏

{

recread();

system("cls");//清屏9

printf("\n");

if(rec.name==0)

{printf("请先注册用户\n");

printf("请按任意键继续...\n");

getchar();

getchar();

vdisplay();}

/////////////////////////////////////////////////////////////////////////////

intsnum;//输入的数字

intsn=10;//机会次数

num=qushu();//取数

L:

system("cls");//清屏

printf("============================================\n");

printf("============================================\n");

printf("================数字竞猜游戏================\n");

printf("============================================\n");

printf("\n");

printf("===========================================\n");

printf("姓名:

%s:

分数%d\n",rec.name,rec.sorce);

printf("\n");

printf("按1:

终止游戏,显示答案\n");

printf("============================================\n");

printf("\n");

printf("请输入你猜想的五个数字(格式为99999样式)你还有%d次机会:

\n",sn);

scanf("%d",&snum);

 

if(snum<100000&&snum>10000||snum==1)

{

if(snum==1)

{

printf("你放弃了本局游戏!

该五个数字是:

%d\n",num);11

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

else

{

intflag=tishi(snum);

 

if(flag!

=0&&sn!

=0)

{

sn--;

if(sn==0)

{

printf("真是遗憾!

十次机会没有了!

没有关系!

下次继续!

\n");

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

newgame();12

}

printf("请按任意键继续猜...\n");

getchar();

getchar();

gotoL;

}

else

{

if(sn!

=0)

addrec();

else

{

printf("请按任意键继续...\n");

getchar();

getchar();

newgame();

}

}

}

}

else

{13

printf("错误的操作数!

\n");;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

gotoL;

}

}

 

inttishi(intaa)//提示函数

{inta,b,c,d,e;

intaf,bf,cf,df,ef;

if(aa==num)

{

printf("恭喜!

你猜对了!

五个数就是:

%d\n",num);

return(0);

14

}

else

{a=num/10000;

b=num/1000%10;

c=num/100%100%10;//获取输入的四个数字

d=num/10%1000%100%10;

e=num%10000%1000%100%10;

af=aa/10000;

bf=aa/1000%10;

cf=aa/100%100%10;//获取输入的四个数字

df=aa/10%1000%100%10;

ef=aa%10000%1000%100%10;

if(af>a)printf("\n第一个数应该比%d小一点!

\n",af);

if(af==a)printf("恭喜!

第一个数字对了!

应该是:

%d\n",af);//数字比较

if(af

\n",af);

if(bf>b)printf("第二个数应该比%d小一点!

\n",bf);

if(bf==b)printf("恭喜!

第二个数字对了!

就是:

%d\n",bf);//数字比较

if(bf

\n",bf);15

if(cf>c)printf("第三个数应该比%d小一点!

\n",cf);

if(cf==c)printf("恭喜!

第三个数字对了!

就是:

%d\n",cf);//数字比较

if(cf

\n",cf);

if(df>d)printf("第四个数应该比%d小一点!

\n",df);

if(df==d)printf("恭喜!

第四个数字对了!

就是:

%d\n",df);//数字比较

if(df

\n\n",df);

if(ef>e)printf("第五个数应该比%d小一点!

\n",ef);

if(ef==e)printf("恭喜!

第五个数字对了!

就是:

%d\n",ef);//数字比较

if(ef

\n\n",ef);

return

(1);

}

}

 

16

voidaddrec()//判断并且增加记录

{

inta;//标志位

a=100;

recread();

rec.sorce=rec.sorce+a;

recwrite();

printf("请按任意键继续...\n");

getchar();

getchar();

newgame();

}

 

intqushu()//取数函数

{

inta=0;

inti=0;

17

srand((unsigned)time(NULL));//随机数种子设置

while(i==0)

{

i=rand();//这样做就是为了增加随机性

i=i%100;

}

 

L:

for(intj=0;j

{

a=a+rand();//判断随机数是否是五位数如果不是继续取数

}

a=(a/i+rand())%100000;

if(a<10000)gotoL;

return(a);

}

18

3.课程设计总结

这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。

好多知识都得自己去学,而不是等着老师教。

第一次完成这么大的一个完整的程序,让自己意识到了自己的知识欠缺。

和以前课本上的许多知识没有学到位。

有时候在电脑面前呆几个小时就是为了解决一个小问题,很是费时间和精力,更是让自己知道了基础知识的重要性,再复杂的程序也是从基础开始的,所以打好基础是关键!

 

19

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

当前位置:首页 > 法律文书 > 调解书

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

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