C语言课程设计报告猜数字游戏.docx

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

C语言课程设计报告猜数字游戏.docx

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

C语言课程设计报告猜数字游戏.docx

C语言课程设计报告猜数字游戏

《高级语言程序设计》

课程设计报告

 

专业:

班级学号:

姓名:

指导教师:

二0一0年7月7日

一、

课程设计题目描述

猜数字游戏

用户从键盘输入4位不重复的数,且开头不为0,来匹配计算机给出的4位随机数,若数字和位置均等同。

表示用户赢了。

每猜一次,计算机均给出提示信息(x,y),x表示数字、位置都匹配的个数,y表示数字匹配但位置不匹配的个数。

二、课程设计目的和要求

要求:

1.交互界面友好;

2.给定H键作为帮助键,帮助用户尽快达到目的,无论何时,按下H键,均能得到详细信息,如:

第一位数字正确,第2,3位数字位置不对等

3.给定K键作为管理键,按下后可以查看计算机所给的4位数,但查看前需要输入密码,密码自定。

4.设置游戏分值,将每次猜的结果以分值的形式给出,如初始分值1000分,每猜一次扣100分,若猜对一个数,奖励20分。

5.将得分最高的前3位的分值在每次开始新游戏前显示出来,同时,在每次游戏结束后将前3位的分值存盘,文件名自定。

三、系统分析与设计

1.程序分为说明区、游戏区、排行榜、帮助模块以及管理模块

 

2.说明区:

介绍游戏规则及部分必要说明

游戏区:

玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。

排行榜:

当玩家成功完成一轮猜数字游戏后,可通过和排行榜中相应记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格游戏成绩在前三名的玩家。

帮助:

给定H键作为帮助键,帮助用户尽快达到目的,无论何时,按下H键,均能得到详细信息,如:

第一位数字正确,第2,3位数字位置不对等

管理:

给定K键作为管理键,按下后可以查看计算机所给的4位数,但查看前需要输入密码,密码自定。

3.流程图:

4.用到的库函数:

#include

#include/*随机库函数*/

#include/*时间库函数*/

#include

5.部分函数说明:

文件调用:

FILE*inp,*ou;//文件输入输出流

inp=fopen("D:

\\rank.txt","r");//导入之前排名

fscanf(inp,"%d%d%d",&e,&b,&a);

fclose(inp);

……

ou=fopen("D:

\\rank.txt","w");//打开文件

fprintf(ou,"%d\n%d\n%d\n",top[0],top[1],top[2]);//将新排名重新保存

fclose(ou);//关闭文件

时间随机函数:

srand(time(NULL));//随机函数初始化,利用时间设置随机种子

四、系统调试出现的问题

错误一:

最后得分输出的全是 -858993460,排行榜无法正常工作,存盘数据不能正常调用

错误代码:

inp=fopen("D:

\\rank.txt","r");

fscanf(inp,"%d%d%d",&top[0],&top[1],&top[2]);

fclose(inp);

修改后:

inp=fopen("D:

\\rank.txt","r");

fscanf(inp,"%d%d%d",&e,&b,&a);

fclose(inp);

错误二:

输入以9开头的数无反应

错误代码:

scanf("%s",&d);//这里输入任意字符串包括四位数字HhYy

m=atoi(d);

if(d[0]>'0'&&d[0]<'9')

修改后:

scanf("%s",&d);

m=atoi(d);

if(d[0]>'0'&&d[0]<='9')

 

五、系统运行报告

游戏开始:

随便输入4位数字,回车得到提示信息:

 

输入H获得帮助:

输入K键验证密码并获取答案:

输入正确结果回车,输出最后得分:

 

六、总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在将近两周的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。

七、参考书目

作  者:

黄明,梁旭,万洪莉编著

书名:

C语言课程设计——程序设计语言课程设计丛书

出版社:

电子工业出版社

出版时间:

2006-6-1

作  者:

陈清华,朱红主编

书名:

C语言课程设计:

案例精选与编程指导

出版社:

东南大学出版社

出版时间:

2003-6-1

作  者:

姜灵芝,余健 编著

书名:

C语言课程设计案例精编

出版社:

清华大学出版社

出版时间:

2008-1-1

作者:

王新,孙雷 编著

书名:

C语言课程设计(21世纪计算机科学与技术实践型教程)

出版社:

清华大学出版社

出版时间:

2009-7-1

 

八、附录

源程序清单:

1.头文件及各定义

#include

#include/*随机库函数*/

#include/*时间库函数*/

#include

voidmain()

{

intn[4]={0};//产生的随机数的每一位

intnum=0;//产生的随机数

intm=0;//用户输入的4位数字

intx=0,y=0;//x表示数字、位置都匹配的个数,y表示数字匹配但位置不匹配的个数。

intc[4]={0};//输入的数字的每一位

inti,j;

chard[4]={0};//输入字符

intgrade=1000;//初始得分

charch='a';//判断第一个while循环

charpw[15]={0};//玩家设置的密码

charpassw[15]={0};//玩家输入的验证的密码

FILE*inp,*ou;//文件输入输出流

inttop[3];//最高得分

intmin=0;//得分最高的3个中最小的那个

inta,b,e;

inttemp=0;

2.游戏主界面

printf("--------------------------------------------------------------------------------\n");

printf("|◎※猜数字游戏※◎|\n");

printf("|制作者:

肖毅王越坤|\n");

printf("|游戏规则如下:

|\n");

printf("|输入4位不相同的数字,且第一位数字不为0|\n");

printf("|初始1000分,每猜一次扣100分,猜对奖励20分|\n");

printf("|每猜一次,计算机均给出提示信息(x,y)|\n");

printf("|x表示数字、位置都匹配的个数|\n");

printf("|y表示数字正确、位置错误的个数|\n");

printf("|◎H键为帮助键K键为管理键◎|\n");

printf("----------------------------------------------------------------------------------\n");

3.排行榜系统

inp=fopen("D:

\\rank.txt","r");//导入之前排名

fscanf(inp,"%d%d%d",&e,&b,&a);

fclose(inp);

printf("|游戏前三名得分为NO.1:

%dNO.2:

%dNO.3:

%d\n",a,b,e);//得分排名

……

//排名系统

top[0]=e;

top[1]=b;

top[2]=a;

min=top[0];

for(i=1;i<3;i++)

{

if(top[i]

}

for(i=0;i<3;i++)

{

if(min==top[i])

{

if(grade>top[i]){top[i]=grade;break;}//修改最小的值

}

}

if(top[0]>top[1])

{

temp=top[0];

top[0]=top[1];

top[1]=temp;

}

if(top[1]>top[2])

{

temp=top[1];

top[1]=top[2];

top[2]=temp;

}

ou=fopen("D:

\\rank.txt","w");//打开文件

fprintf(ou,"%d\n%d\n%d\n",top[0],top[1],top[2]);//将新排名重新保存

fclose(ou);//关闭文件

4.帮助键

if(d[0]=='H'||d[0]=='h')//帮助键H

{

for(i=0;i<4;i++)

{

if(c[i]==n[i])

{

printf("第%d位数字正确\n",4-i);//判断计算位置和数字都正确的数

}

}

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(c[i]==n[j]&&(i!

=j))

{

printf("第%d位数字位置不对\n",4-i);//计算位置错误,但数字正确的数

}

}

}

}//if循环在这里结束

5.管理键

if(d[0]=='K'||d[0]=='k')//查看键K

{

printf("请输入密码\n");

if(pw[0]==NULL)

{

scanf("%s",pw);

printf("计算机产生的随机数为%d,并记牢您的密码\n",num);//第一次输入密码先保存密码

}

else

{

scanf("%s",passw);//以后输入密码要先与以前的密码进行比较

if(strcmp(pw,passw)==0)

{

printf("计算机产生的随机数为%d\n",num);

}

else

printf("密码不正确\n");

}

}//if循环在这里结束

6.答案正确,退出整个循环

while(ch!

='Y'&&ch!

='y')//满足这个条件则退出while循环

{

……

//while循环这里结束

printf("您的最后得分为%d\n",grade);

printf("是否要退出?

\n");

printf("按下Y则退出,按下任意键继续(除Y/y)\n");

scanf("%s",&ch);

}

 

------------------------------------------------------------------------------------------------------------END

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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