猜数字游戏 2系统.docx
- 文档编号:30130876
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:28
- 大小:98.43KB
猜数字游戏 2系统.docx
《猜数字游戏 2系统.docx》由会员分享,可在线阅读,更多相关《猜数字游戏 2系统.docx(28页珍藏版)》请在冰豆网上搜索。
猜数字游戏2系统
C语言程序课程设计任务书
1、课程设计性质与目的:
C语言程序设计是一门实践性很强的课程。
C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、分析程序及上机操作、调试程序的能力,让学生加深理解书上所学的知识,提高动手操作能力及分析问题和解决问题的能力。
2、课程设计包含的知识点:
1.掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语句。
2.掌握数组的基本概念。
掌握一维数组与二维数组的使用,掌握字符数组与字符串的关系。
3.熟练掌握指针、地址、指针类型的概念及其使用。
掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系
4掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。
5.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。
结构体与指针、函数的关系。
3、课程设计的要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
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
0A1B
第四次输入:
9786
1A1B
第五次输入:
1794
2A0B
第六次输入:
2793
2A2B
第七次输入:
3792
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纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
目录
方案选定11
课程设计主文档15
一、设计课题四:
猜数字游戏15
二、概要设计:
15
1)、程序的模块组成:
15
2)、各个函数的主要功能:
16
三、详细设计17
1、相关的数据类型17
2、函数间的调用关系图如下:
17
3、流程图18
四、使用说明:
19
1、打开程序19
2、进入选择页面:
19
3、进行游戏19
4、退出19
五、调试分析及心得体会:
20
1、调试分析20
2、心得体会:
20
六、附录:
22
1、参考资料:
22
2、程序源清单:
22
七、评分:
31
方案选定
需求分析
猜数字游戏是一个运行在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
#include
#include
#include
voidrand2();
intrand1();
voidinput1();
voidcompare1();
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、程序源清单:
#include
#include
#include
#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();/*调用读取破纪录者函数*/
clrscr();/*清屏*/
n1=0;
n3=0;
getnumber();/*调用随机产生4个数的函数*/
for(j=i-1;j>=1;j--)
printf("%d",a[j]);
getchar();
printf("\n\n\n\n\n");
printf(“==============================welcometothegame==========================\n\n\n");
printf("======================================================================\n\n\n");
printf("1.beagain\n\n");
printf("2.express\n\n");
printf("0.Esc\n\n");
printf("======================================================================\n\n\n");
printf("youarechoice:
");
scanf("%d",&choice);
if(choice==2)
{
clrscr();display();
}
if(choice==0)exit(0);
while(choice==1)
{
clrscr();
while(n1<4&&n3 { ++n3; n1=0; n2=0; printf("Thetopplayer: %sbyonly%itimesGuess4numbers: \n",top.name,top.score); while (1) { flag=0; for(i=1;i<=4;i++) {scanf("%d",&b[i]);if(b[i]>=10||b[i]<0)exit (1);} for(i=1;i<=4;i++) for(j=1;j<=4;j++) if(i! =j&&b[i]==b[j]){flag=1;break;} if(flag==1){printf("pleaseinputthe4numbersagain: \n");continue;} elsebreak; } for(i=1;i<=4;i++) { if(a[i]==b[i]) { n1++; continue; } for(j=1;j<=4;j++) 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? "); scanf("%s",name); printf("Congratulastions! youfinishitby%dtimes\n",n3); breakrecord();/*调用新纪录者函数*/ record(); } getchar(); /*gotoxy(20,13);*/ printf("Doyouwannaplayitagain? (y/n): "); /*gotoxy(20,55);*/ ch=ge
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 猜数字游戏 2系统 数字 游戏 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)