猜数字游戏 2Word下载.docx
《猜数字游戏 2Word下载.docx》由会员分享,可在线阅读,更多相关《猜数字游戏 2Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
6.按学号顺序选课题号,并在规定的时间独自完成相关课题的C源程序编写、调整和运行。
源程序与编译生成各文件均保存在软盘中;
7.按本任务书的要求,按附录的要求编写《课程设计报告》〔Word文档格式〕。
并用A4的复印纸打印并装订;
8.在2008年7月8日之前,请各班学习委员收齐课程设计报告和源程序软盘交王颖教师,联系:
8883238。
4、课程设计考核方法:
根据学生所完成课程设计报告的完整性,正确性,和算法实现的质量,分为优,良,中,与格和不与格五个等级。
正文总字数要求在5000字以上〔不含程序原代码〕。
5、设计报告的完整格式应包含以下容:
a)设计总体思路
b)主程序与各个模块说明
c)总体模块框图
d)各个程序模块说明
e)程序流程图
f)程序清单
g)总结与体会
6、课程设计指导教师:
王颖
设计课题:
猜数字游戏
一、问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:
1、本游戏显示这样的菜单:
(1)随机产生数据
(2)用户输入数据
(3)退出游戏
2、游戏成功与否都能返回主菜单
三、算法提示:
1、数据结构:
数组
2、用简单的程序设计方法
四、测试数据:
测试数据:
3792
第一次输入:
1234
0A2B
第二次输入:
5678
0A1B
第三次输入:
0867
第四次输入:
9786
1A1B
第五次输入:
1794
2A0B
第六次输入:
2793
2A2B
第七次输入:
4A0B
游戏成功!
!
五、其它:
对该系统有兴趣的同学可以在实现系统根本功能后,完善系统的其它功能,如:
破记录功能,假如你所匹配的次数小于纪录保持者,如此为破纪录。
调用积分函数,假如你一次完成,如此记录7分,假如你2次完成如此记录6分,一次类推,大于8次如此不记录分数.
课程设计报告规
一、需求分析
1、程序的功能。
2、方案选定
二、概要设计
1、程序由哪些模块组成以与一个模块之间的层次结构、模块的调用关系;
每个模块的功能。
2、课题的总体数据结构和数据库结构;
即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计
1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、调试分析以与设计体会
1、测试数据:
准备典型的测试数据和测试方案,包括正确的输入与输出结果和含有错误的输入与输出结果。
2、程序调试中遇到的问题以与解决问题的方法。
3、课程设计过程经验教训、心得体会。
五、使用说明
用户使用手册:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
六、书写格式
1、设计报告要求用A4纸打印成册:
2、标题和正文要求见附1
3、封面格式如下页。
附录
1、参考书目
2、源程序清单〔带注释〕
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件〔A4大小的图纸与程序清单〕。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;
行距为22。
●正文的容:
一、课题的主要功能;
二、课题的功能模块的划分〔要求画出模块图〕;
三、主要功能的实现〔至少要有一个主要模块的流程图〕;
四、程序调试;
五、总结;
六、附件〔所有程序的原代码,要求对程序写出必要的注释〕。
●正文总字数要求在5000字以上〔不含程序原代码〕。
前言
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计根本技能和技巧,多人合作,以至一整套软件工作规的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;
另一方面,能使书上的知识变“活〞,使学生更好地深化理解和灵活掌握教学容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于根本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进展设计,设计完毕写出课程设计报告,用A4纸打印成册;
并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导教师。
方案选定
需求分析
猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的根本规如此,给用户进展成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进展更新。
系统概述
该软件在Windows系统上为玩家提供猜数字游戏的根本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。
当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。
如果用户猜数字的次数超过8次,如此提示用户游戏失败,如果在8次之猜出4个数字和正确的顺序,如此提示用户猜数字成功,并到排行榜中进展比拟,如果排名在前一名,如此计入排行榜中,以便其他用户查看。
在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,如此插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。
在帮助模块,用户可以查看游戏规如此,当熟悉规如此后可以退出帮助模块。
功能需求描述
猜数字游戏软件的总体目标是按照特定游戏规如此为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。
游戏规如此如下。
①游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。
如果数字值和位置顺序均正确,如此猜数字成功。
②玩家有8次猜数字的机会,如果在8次之仍末猜出正确的数字值和数字位置顺序,如此提示用户游戏失败。
③一旦玩家在8次的次数限制猜出正确的数字值和位置顺序,如此赢得游戏。
④当玩家赢得游戏后,会与排行榜中的前五名玩家的游戏记录比拟,如果排名能够进入前五名,如此更新排行榜,使当前玩家成为入榜选手。
⑤记分规如此:
猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是排列份数最少的前五名选手。
本游戏软件需要实现以下一些根本功能。
①游戏区:
玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。
②刷新排行榜:
当玩家成功完成一轮猜数字游戏后,可通过和排行榜中相应记录的比拟判断玩家是否可以进入排行榜,进入排行榜的资格游戏成绩在前五名的玩家。
③查看排行榜:
玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。
排行榜的查看按一定顺序显示给用户,便于查看。
④去除排行榜:
玩家可以选择去除排行榜功能,使得排行榜上的玩家和玩家游戏记录从系统中去除,只留下系统默认的玩家名(player)和系统默认记录8次。
⑤帮助:
玩家通过帮助功能了解游戏规如此和排行榜设置规如此。
总体设计
在前面对猜数字游戏进展需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以与界面布局,并使得系统的总体设计符合软件工程中总体设计的根本原如此。
开发与设计的总体思想
猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进展猜数字游戏的原始数字的产生和用户每次进展猜数字操作之后的游戏提示,这两方面的规如此设计往往决定了软件运行的正确性和质量。
模块设计
1、游戏区模块
该模块为玩家提供猜数字游戏的主休功能,由系统自动产生4个随机排列的整数,并给用户8次机会猜想数字的数值和排列顺序。
如果用户在8次之没有猜出正确的结果,如此提示用户游戏失败,否如此提示用户猜数字成功,并调用产生新记录模块对玩家游戏成绩进展处理。
(因精力有限且只能用画图来画个框架,所以就不再有图了)①产生原始数字:
由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进展猜数字游戏。
②游提示:
提示用户数值和位置全对的数字个数,和只有数值但位置不对的数字个数。
③原始数字显示:
当用户在8次之仍未能猜出原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。
2、排行榜模块
该模块为玩家提供排行榜的浏览和去除功能,包括按玩家成绩顺序浏览、按玩家浏览和去除排行榜3个子功能。
①按玩家成绩顺序浏览子功能中,将玩家的、游戏成绩按猜数字次数从少到多的顺序列表显示,即将玩家记录从高到底显示。
②按玩家浏览的子功能中,为了玩家便于查找到自己的游戏成绩,将玩家的和猜数字次数记录按照玩家的字母顺序列表显示。
③去除排行榜:
当用户选择去除排行榜功能时,系统会将所有玩家的历史游戏记录和玩家一起从排行榜中去除,在排行榜中只留下默认的游戏记录和默认的玩家,即系统默认玩家player和系统默认记录8次。
3、产生新记录模块
该模块的功能是当玩家成功完成游戏时,判断用户可否进入排行榜,如果可以进入,如此刷新排行榜中的记录,将当前玩家的游戏记录写入排行榜,并将排行榜目前结果显示给用户。
4、读取最好记录模块
读取最好记录模块的主要功能是当用户选择游戏开始选项时,首先提示用户目前排行榜中的最游戏记,如果目前没有排行的玩家记录,如此初始化排行榜,给出系统默认的玩家和默认的游戏记录。
如果目前排行榜中有玩家记录,如此判断出最好记录显示给用户。
5、帮助模块
帮助模块提供的功能是当玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规如此和游戏中相关提示的含义。
数据结构设计
猜数字游戏软件涉与到对玩家信息和排行榜的操作。
为将玩家的和游戏成绩描述成一个玩家的两个重要方面,使用C语中的结构体来描述。
具体的数据结构设计如下。
课程设计主文档
一、设计课题四:
二、概要设计:
程序的模块组成以与各个函数的功能:
1)、程序的模块组成:
主函数:
intmain()
创立结构体:
structp1〔〕
使数字产生循环:
intrand1()
调用读取破记录:
goread()
输入数字:
voidinput1();
初始化随机数发生器:
getnumber()
去除文本模式窗口:
clrscr();
读入字符串的时候,直到回车为止:
gets()
2)、各个函数的主要功能:
随机产生4个数的函数:
随机产生4个数字。
randomize()是c函数库提供的一个函数,功能给产生随机数的进展初始化
去除文本模式窗口
1、相关的数据类型
#include<
stdio.h>
conio.h>
stdlib.h>
string.h>
voidrand2();
intrand1();
voidinput1();
voidpare1();
inti,j,k,c,d,b[4];
chara[24];
将数字定义为整型
2、函数间的调用关系图如下:
3、流程图
四、使用说明:
1、打开程序
2、进入选择页面:
〔1〕选择1为查看记录
〔2〕选择2为新游戏
〔3〕选择0为退出
3、进展游戏
4、退出
五、调试分析与心得体会:
1、调试分析
输入的游戏玩家人数太多时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最优。
刚开始执行输入函数,按数字顺序输入,输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在教师的帮助下,所需结果能按正常顺序输出了。
经验教训
同时,要谨记调试失败的原因,以免下次犯同类错误。
2、心得体会:
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术开展的日新月异,计算机编程已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。
经过一周的C语言课程设计,我不但实践了课本的知识,还制作了自己的小程序,感觉自己对C语言有了更深入的了解。
在实践中,自己编程常会犯错误,并总结一些克制缺点的方法。
深刻体会到程序设计中最重要的一局部不是编写源程序,而是调试过程。
只有经过调试程序,我们才能掌握正确的语法知识与把问题的解决方法用程序语言来表达。
在设计程序的同时也增长了翻阅有关文献的能力,加强了实践能力与自学能力,培养了分析问题、编程和动手能力,掌握了程序设计根本技能。
回顾起此次课程设计,至今我仍感慨颇多。
如;
有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是一个函数放错了地方所致,有时一个功能不知道怎么实现找这个、找那个。
有所编到最后一运行却告诉我错误,那真的很烦人。
以前上课都是学一些最根本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西,这样自己非常的投入,有时候一编就是二三个小时坐在电脑前面,弄得时间都忘了。
但现在回过头来看,还是挺有成就感的。
确实,面对一件新事物,从理论到实践,在整整一星期的日子里,可以说是苦多于甜,但是结果却是令我十分欣慰的。
因为我学到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且获得了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正掌握好所学知识,以便更好的为社会服务,从而提高自己的人生价值并实现自己的人生理想!
在设计的过程中遇到问题,可以说是数不胜数,这毕竟第一次做的,难免会遇到各种各样的问题。
此外,在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够结实。
善于总结,也是学习能力的一种表现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实际动手做,我们才真正领略到“艰辛奋斗〞这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。
对我们而言,知识上的收获重要,精神上的丰收是可喜的。
挫折是一份财富,经历是一份拥有。
这次实际操作必将成为我们人生旅途上一个非常美好的回忆!
同时,在教师的身上我们学得到很多实用的知识,在次我们表示感!
同时,对给过我帮助的所有同学和各位指导教师再次表示忠心的感!
六、附录:
1、参考资料:
《C语言程序设计案例教程》基温编著清华大学
《C语言程序设计案例分析》人民邮电
《C程序设计〔第三版〕》谭浩强著清华大学
《C语言程序设计》邮电大学
2、程序源清单:
time.h>
#defineMAX8
#definePLAYNUM10
structpl/*创立结构体*/
{
charname[20];
intscore;
}player,top,total[PLAYNUM];
charname[20];
inta[5],b[5],n1,n2,n3,i,j,count=0;
/*n1计算位置数字一样的数字个数n2计算数字一样但位置不一样的数字个数n3计算所猜次数*/
charch;
main()
{intchoice,m,flag=0;
charf;
clrscr();
printf("
Doyouwanttoinitializetherecordfile?
(y/n)"
);
f=getchar();
if(f=='
y'
)newset();
loop1:
goread();
/*调用读取破纪录者函数*/
/*清屏*/
n1=0;
n3=0;
getnumber();
/*调用随机产生4个数的函数*/
for(j=i-1;
j>
=1;
j--)
%d"
a[j]);
getchar();
\n\n\n\n\n"
printf(“==============================weletothegame==========================\n\n\n"
======================================================================\n\n\n"
1.beagain\n\n"
2.express\n\n"
0.Esc\n\n"
======================================================================\n\n\n"
youarechoice:
"
scanf("
%d"
&
choice);
if(choice==2)
{
display();
}
if(choice==0)exit(0);
while(choice==1)
while(n1<
4&
&
n3<
MAX)
++n3;
n2=0;
Thetopplayer:
%sbyonly%itimesGuess4numbers:
\n"
top.name,top.score);
while
(1)
flag=0;
for(i=1;
i<
=4;
i++)
{scanf("
b[i]);
if(b[i]>
=10||b[i]<
0)exit
(1);
}
for(i=1;
for(j=1;
j<
j++)
if(i!
=j&
b[i]==b[j]){flag=1;
break;
if(flag==1){printf("
pleaseinputthe4numbersagain:
continue;
elsebreak;
if(a[i]==b[i])
n1++;
continue;
for(j=1;
if(b[i]==a[j])n2++;
printf("
%dA%dByouhaveguessed%dtimes\n"
n1,n2,n3);
}clrscr();
gotoxy(20,10);
if(n3==MAX)printf("
Youblewit,theansweris%d%d%d%d\n"
a[1],a[2],a[3],a[4]);
if(n3<
{printf("
Whatisyouname?
%s"
name);
Congratulastions!
youfinishitby%dtimes\n"
n3);
breakrecord();
/*调用新纪录者函数*/
record();
/*gotoxy(20,13);
*/
Doyouwannaplayitagain?
(y/n):
/*gotoxy(20,55);
ch=getchar();
if(ch=='
)gotoloop1;
n'
)exit
(1);
}}
goread()/*读取破纪录者函数*/
FILE*fp;
if((fp=fopen("
player.txt"
"
rb"
))==NULL)
/*newset();
调用初始化纪录者函数*/
fp=fopen("
if(fread(&
top,sizeof(structpl),1,fp)!
=1)
filereaderror"
fclose(fp);
n