已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言课程设计-猜数字摘要该软件在windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以在开始游戏时,选择不同的难度来进行游戏。当用户选择了适合的难度时,系统会在内部产生对应范围内的随机数,以供用户进行猜测,用户每次猜数字后系统会给出本次猜数字的结果提示,先比较用户猜测数字是否等于系统产生的随机数,若相等则提示用户猜数字成功,然后输出用户猜测的次数和本局游戏所用时间,并根据猜测次数给出评价。如果用户猜测数字不等于系统产生的随机数,则提示该数字与随机数比较时大了还是小了,并输出比较结果,同时记录当前用户猜测的次数。直至用户成功猜中随机数。且用户在游戏过程可输入对应指令,返回难度选择菜单,再根据个人喜好选择其它难度或者退出游戏。关键词:游戏模块 猜数字 随机数 中途退出目录 摘要1 一.设计要求3 二.开发环境3 三.设计目的3 四.需求分析3 五.系统设计4 (一)总体设计4 (二)系统流程描述6 (三)详细设计7 六.程序测试11 七.心得体会12 八.参考文献13 附录:源程序13一.设计要求 1).功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜, 直至猜到,给出所用时间和评语。2).界面要示:图形方式界面二.开发环境开发语言:c语言。c语言功能丰富,表达力强,使用灵活,应用面广,目标程序效率高, 可移植性好,既有高级语言的优点,又有低级语言的许多优点。开发工具:tc+3.0速度快 功能强大稳定兼容性强调试方便,适合初学者使用三.设计目的为了巩固和加深对编程课程的基本知识的理解和掌握,并且能够掌握编程和程序调试的基本技能。通过程序的设计训练和提高学生的基本技能,掌握字符串的表示方法和字符串函数的功能、编程软件操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高解决实际问题的能力,巩固语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。四.需求分析 猜数游戏的目标是按照设定的游戏规则为玩家提供一个简单而愉快的游戏界面,同时给玩家一些特定的功能,便于更好的使用该游戏软件。 本游戏突破一般游戏的娱乐功能,在娱乐的同时开拓了玩家的思维及应变能力。猜数字游戏是一种看似简单但事实很难的游戏,我们在玩的同时要不停地动脑筋,计算着数字的概率,这就锻炼着我们对数字的敏感和对概率的熟悉。这个游戏不仅学生可以玩,成人也是很适合的,我们在玩游戏的同时也在不停的锻炼我们的耐心和横心。由于我们是初学者,设计过程中有很多不足之处,所以我们的游戏并没有排行等功能。程序代码中有,级别选择的机会,选择合适难度后可正式进入游戏模块。该游戏可能有点难度,但我认为这或许会更好,我们玩的时候也是和我们自己比赛,不停的超越自己。功能需求描述:猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供玩家根据个人意向选择不同难度进行游戏的机会。游戏规则如下。1, 游戏软件随机产生1个数字,但不显示,给用户提供输入提示符,让用户猜这个数字的值。如果正确地猜中这个数字,则猜数字成功。2, 玩家猜数字的次数不限,游戏过程中玩家可输入特定指令放弃游戏返回主界面。3, 玩家每次输入猜测数字,统会将输入数字与本次游戏产生的随机数比较,相等则猜数字成功,不相等则根提示猜测数字与随机数比较,大了还是小了并记录当前游戏猜测次数。4, 当玩家成功猜中数字时,系统会输出本局所用时间和玩家猜测次数,并根据游戏次数对游戏结果作出评价。本游戏软件需要实现以下一些基本功能。1, 主界面区:当玩家运行程序后,程序会输出一个主界面,其中包括3个不同难度选择和1个推出程序的选项。2, 游戏区:玩家可以在游戏区逐次猜数字,系统会给玩家每次猜数字后的提示,猜测数字与随机数比较,是大了还是小了,玩家在游戏过程可输入特定指令跳出游戏并返回主界面。3, 游戏结果评价:当玩家成功猜中数字时,系统会输出本局所用时间和玩家猜测次数,并根据游戏次数对游戏结果作出“wonderful”,“perfect”,“cool”等评价。五.系统设计(一)总体设计: 在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计过程中,给出猜数字的模块结构,流程描述及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。开发与设计的总体思想 猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。2.系统模块设计结构图 依据需求分析结果,猜数字游戏可以分为三个模块:主界面区模块,游戏区模块,游戏结果评价模块。系统模块结构如图(a)所示。猜数字游戏主界面区游戏区游戏结果评价 (a)3.模块设计主界面区模块 该模块为玩家提供难度选择和退出程序功能,选择不同选项将执行不同函数程序,同时若用户输入错误信息会谈出提示语句,要求用户正确输入。 低级难度:产生1个1到10 范围内的随机整数,执行游戏区模块,开始游戏。 中级难度:产生1个1到10 0范围内的随机整数,执行游戏区模块,开始游戏。 高级难度:产生1个1到10 00范围内的随机整数,执行游戏区模块,开始游戏。 退出程序:结束游戏,退出程序。排行榜模块功能树如图(b)所示。 主界面低级难度退出程序中级难度高级难度 (b) 游戏区模块该模块为玩家提供猜数字游戏的主体功能,在主界面模块选择难度后对应由系统产生1个随机的整数,以供用户进行猜测该数字的数值。用户在游戏工程可输入特定指令放弃本局游戏并返回主界面。用户猜中数字则提示用户游戏成功,并显示系统随机产生原始数字,同时输出本局游戏时间猜数次数,并根据猜测次数对游戏结果进行评价。该模块有3个子功能。 产生原始数字:由系统产生1个对应选择范围的随机数,作为游戏的原始数字供玩家进行猜数字游戏,同时计时器开始工作。游戏提示:用大了(too higjh),小了(too low)的形式提示玩家当前猜数字的匹配情况,并记录当前游戏猜测次数。用这种方式提示用户对自己的猜测进行调整。放弃游戏:用户在游戏过程了输入“e”或“e”并二次确认后选择放弃游戏,再次返回主界面,以选择其它难度重新开始游戏或退出程序。游戏结果统计评价:用户猜中数字后提示用户游戏成功,并显示系统随机产生原始数字,同时输出本局游戏时间猜数次数,并根据猜测次数对游戏结果进行评价。模块功能树如图(c)所示.产生原始数字,开始计时游戏提示游戏区放弃游戏游戏结果统计评价 (c)游戏结果评价 该模块的功能是当玩家成功完成游戏猜中数字时,系统会停止计数器,显示本局游戏系统所产生的原始随机数,即正确答案。同同时输出本局游戏所用时间和玩家猜测次数,并根据游戏次数对游戏结果作出“wonderful”,“perfect”,“cool”等评价。产生新记录模块功能树如图(d)所示。停止计时器显示原始数游戏结果评价显示游戏所用时间和数字猜测次数根据猜测次数评价游戏结果 (d) (d)(二)系统流程描述系统的主体处理流程如图(e)所示。选择难度猜测随机数结束游戏没猜中放弃游戏产生随机数猜中了重新开始显示游戏次数时间和评价显示游戏次数和时间开始游戏提示猜测情况 (e)(三)详细设计1.游戏模块设计模块描述 游戏区模块是猜数字游戏软件的核心部分,用户进入模块之后,系统产生1个对应范围内的随机整数,计时器开始工作,并在玩家每一次猜数后都给玩家当前猜测结果的提示。大了表示猜测数字比随机数大,小了表示猜测数字比随机数小。源文件定义 #include #include #include#include 函数的声明 vido mian()函数 功能:软件执行的入口,在函数所在的程序头部包含了部分系统必需的头文件和完成其他功能的源文件。在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些和这些功能的选项代码。并给用户提供了输入功能选项代码的接口,当用户输入选项代码后,则显示给用户相应的功能处理界面或结果。输入:用户想要使用的系统功能代码。处理:a.接受玩家输入的选项代码b.引导玩家进入相应的功能界面。输出:a. 系统功能选择平台。2. 游戏功能模块开始游戏和进行游戏过程,提示玩家依次猜数字,每次给出提示,直至放弃游戏或正确猜中数字。程序: void test(int gess)char num=null;char newchoose=null;int sum=1;int tum;long ti;system(cls);clrscr(); /清空屏幕内容srand(unsigned)time(null); /计时器开始运行t=time(null); /计时器统计秒数赋值给tint temp = (num-0);while(temp!=gess) /游戏主程序 printf(n);printf(n (input e can display a menu)n); printf(n please input number:);scanf(%s,&num);if(num = e) /输入小写e,统计猜测次数和所用时间,回到主界面tum = sum-1; ti=time(null)-t+1;printf(n input y to quit the game.n); /再次确认是否返回主界面printf(n input n to continue the game.n);printf(n (y/n);scanf(%s,&newchoose);if(newchoose = y) /输入小写y返回主界面 printf(n you used %d times,and %d seconds.n,tum,ti); /显示猜测次数和所用时间,退回主界面printf(n press enter to quit.);break;else if(newchoose = y) /输入大写y返回主界面printf(n you used %d times,and %d seconds.n,tum,ti); /显示猜测次数和所用时间,退回主界面printf(n press enter to quit.);break;else if(num = e) /输入大写e,统计猜测次数和所用时间,回到主界面tum = sum-1;ti=time(null)-t+1;printf(n input y to quit the game.n);printf(n input n to continue the game.n);printf(n (y/n);scanf(%s,&newchoose);if(newchoose = y) /输入小写y返回主界面 printf(n you used %d times,and %d seconds.n,tum,ti); /显示猜测次数和所用时间,退回主界面printf(n press enter to quit.);break;else if(newchoose = y) /输入大写y返回主界面 printf(n you used %d times,and %d seconds.n,tum,ti); /显示猜测次数和所用时间,退回主界面printf(n press enter to quit.);break;temp = num-0;if(tempgess) /比较输入数字与随机数的大小,并输出比较情况system(cls);clrscr(); /清空屏幕printf(n -%d is too high-,temp); /输出提示语,猜测数字太大sum+; else if(tempgess)system(cls);clrscr(); /清空屏幕printf(n -%d is too low-,temp); /输出提示语,猜测数字太小sum+;else t=time(null)-t+1; if(sum3)printf(n wonderful!.the number is %dn,gess);/猜中后统计猜测次数和所有时间,根据猜测次数给出相应评价,按enter退回主界面printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum5)printf(n perfect !.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum7)printf(n cool!.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum9)printf(n great!.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum11)printf(n good.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum11)printf(n bad!.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else printf(n you need more pracice !.the number is %d,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);getchar();getchar();六.程序测试打开游戏:猜数字,出现主界面输入错误数字,出现提示按enter键回到主菜单后,输入1,选择初级难度的游戏过程输入“e”放弃游戏,按“enter”可返回主界面正确猜中数字,按“enter”可返回主界面七.心得体会经过几个星期的c语言课程设计,感觉自己收获不少!本程序涉及的知识虽然简单,却也是c语言必备的基本知识。在做课程设计的过程中,我见识到了c语言的重要性和我在程序设计方面的不足,让我了解到要把书本知识转换为可以实际操作的东西是需要扎实的理论基础和严谨的逻辑思维的,同时我也发现了平时很多没有注意到的问题,弥补了我c语言方面的不足,比如说数组,在本程序中出现的很频繁,我必须用心的一个一个分析,调试,每一次的调试成功,都带给了我莫大的欣喜。回顾起此次c语言的课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。八.参考文献1 作者:谭浩强 c程序设计(第三版) 出版单位:清华大学出版社2 作者:黄明 梁旭 万洪莉 c语言课程设计 出版单位:电子工程出版社附录:源程序(因函数定义等原因,保存文件名以cpp为后缀程序放可正常运行)#include#include#include#include int dif_1(); /定义各变量int dif_2();int dif_3();long t; int ch;void menu_1();int menu_in(); int dif_1() int dif_1;dif_1 = rand()%10+1; /产生1到10之间的随机数return dif_1;int dif_2()int dif_2;dif_2 = rand()%100+1; /产生1到100之间的随机数return dif_2;int dif_3()int dif_3;dif_3 = rand()%1000+1; /产生1到1000之间的随机数return dif_3;void menu_1() /主界面代码 /不同选项对应不同难度int i;clrscr();for(i=0;igess) /比较输入数字与随机数的大小,并输出比较情况system(cls);clrscr(); /清空屏幕printf(n -%d is too high-,temp); /输出提示语,猜测数字太大sum+; else if(tempgess)system(cls);clrscr(); /清空屏幕printf(n -%d is too low-,temp); /输出提示语,猜测数字太小sum+;else t=time(null)-t+1; if(sum3)printf(n wonderful!.the number is %dn,gess);/猜中后统计猜测次数和所有时间,根据猜测次数给出相应评价,按enter退回主界面printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum5)printf(n perfect !.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum7)printf(n cool!.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf(n press enter to continue.);else if(sum9)printf(n great!.the number is %dn,gess);printf(n you used %d times,and %d seconds.n,sum,t);printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论