

免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言课程设计-猜数字摘要该软件在windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。如果用户猜数字的次数超过10次,则提示用户游戏失败,如果在10次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。关键词:游戏模块 猜数字 四个不同的数字 排行榜目录摘要11 绪论32 开发环境33 需求分析34 系统设计4 4.1 总体设计.4 4.2 系统流程描述.7 4.3 详细设计.85 测试.126 结论.13参考文献.14一, 绪论:猜数游戏的目标是按照设定的游戏规则为玩家提供一个简单而愉快的游戏界面,同时给玩家一些特定的功能,便于更好的使用该游戏软件。在对本程序的实现过程中,将各个功能分别由不同的函数来实现,从而完成了对本程序的模块划分。该游戏共分为4个模块,分别是游戏模块,查询模块,帮助模块,退出模块。围绕这4个模块,大量函数,互相调用,如:startprogram();sortbyname();printhelp();等等,还用了大量的文件指针,文件的读写与存储。本程序在实现游戏的基本功能同时,还提供了查询与帮助的功能,因此玩家可以更好的适应这个游戏,也达到了设计这个游戏的目的了。而设计的重点在于随机数字的产生与游戏的提示,这两个方面的设计决定了程序运行的正确性和质量。二,.开发环境:开发语言:c语言。c语言功能丰富,表达力强,使用灵活,应用面广,目标程序效率高,可移植性好,既有高级语言的优点,又有低级语言的许多优点。开发工具:vc+6.0.vc+6.0速度快 功能强大稳定兼容性强调试方便.三,需求分析:猜数字游戏是一个运行在windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户提供一个游戏的平台。并且,该游戏提供了给用户计分的功能,并能对每个参与游戏的用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新。功能需求描述:猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并提供相应的帮助功能。游戏规则如下。1, 游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字和位置顺序均正确,则猜数字成功。2, 玩家有10次机会猜数字的机会,如果10次之内仍未猜出正确的数字值和数字的位置顺序,则提示用户游戏失败。3, 一旦玩家在10次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。4, 当玩家赢得游戏后,会与排行榜中的前五名玩家的游戏记录比较,如果排名能够进入前五名,则更新排行榜,使当前玩家成为入榜选手。5, 计分规则:猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是排列分数最少的前五名选手。本游戏软件需要实现以下一些基本功能。1, 游戏区:玩家可以在游戏区逐次猜数字,系统会给玩家每次猜数字后的提示,包括数值,位置均正确的数字个数和数值正确,但位置不正确的数字个数。2, 刷新排行榜:当玩家成功完成一轮猜数字游戏后,可以通过和排行榜中相应记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格是游戏成绩在前五名的玩家。3, 查看排行榜:玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。排行榜的查看按一定的顺序显示给用户,便于查看。4, 清除排行榜:玩家可以选择清除排行榜功能,使得排行榜的玩家名字和玩家游戏的记录从系统中清除,只留下系统默认的玩家名(player)和系统默认记录10次。5, 帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则。四,系统设计:总体设计:在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计过程中,给出猜数字的模块结构,流程描述及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。开发与设计的总体思想猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。系统采用结构化的设计方法进行设计,采用c语言进行开发。2.系统模块设计结构图依据需求分析结果,猜数字游戏可以分为五个模块:游戏区模块,排行榜模块,产生新记录模块,读取新记录模块和帮助模块。系统模块结构如图(a)所示。猜数字游戏游戏区排行榜产生新记录读取最新记录帮助模块 (a)3.模块设计游戏区模块该模块为玩家提供猜数字游戏的主体功能,有系统产生4个随机排列的整数,并给用户10次机会猜测数字的数值和排列顺序。如果用户在10次内没有猜出正确的结果,则提示用户游戏失败,否则提示用户游戏成功,并调用产生新记录模块对玩家游戏成绩进行处理。该模块有3个子功能。产生原始数字:由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。游戏提示:用如1a2b的形式提示玩家当前猜数字的匹配情况,例如,1a表示玩家猜测的数字中有1个是数值与系统产生的原始数字相符合,并且位置也完全符合,2b表示玩家猜测的数字中有2个与系统产生的原始数字相符合,但位置不符。用这种方式提示用户对自己的猜测进行调整。原始数字显示:当用户在10次之内仍未能猜出正确的原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。模块功能树如图(b)所示.产生原始数字游戏提示游戏区原始数字显示 (b)排行榜模块该模块为玩家提供排行榜的浏览功能和清除功能,包括按玩家成绩顺序浏览,按玩家姓名浏览和清除排行榜三个子功能。按玩家成绩顺序浏览子功能中,将玩家的姓名,游戏成绩按猜数字次数从少到多的顺序显示,即将玩家记录从高到低显示。按玩家姓名浏览的子功能中,为了玩家便于查找到自己的游戏成绩,将玩家的姓名和猜数字次数记录按照玩家姓名的字母表顺序列表显示。清除排行榜:当用户选择清除排行榜功能时,系统会将所有玩家的历史记录和玩家姓名一起从排行榜中清除,在排行榜中只留下默认的游戏记录和默认游戏玩家姓名,即系统默认玩家姓名:player和系统默认记录次数10次。排行榜模块功能树如图(c)所示。排行榜按玩家成绩浏览清除排行榜 (c)产生新的记录模块该模块的功能是当玩家成功完成游戏时,判断用户可否进入排行榜,如果可以进入,则刷新排行榜的记录,将当前玩家的游戏记录写入排行榜,并将排行榜目前结果显示给用户。产生新记录模块功能树如图(d)所示。判断用户可否进入排行榜入榜玩家刷新排行榜产生新记录显示当前排行榜状况 (d) 读取最好记录模块读取最好记录模块的主要功能是当用户选择游戏开始选项时,首先提示用户目前排行榜中的最好游戏记录,如果目前没有排行榜记录,则初始化排行榜,给出系统默认的玩家姓名和默认的游戏记录。如果当前排行榜中有玩家记录,则判断最好记录显示给用户。读取游戏记录模块功能树如图(e)所示。读取游戏记录判断有无游戏记录初始化排行榜获取最好记录游戏开始时显示最好记录 (e)帮助模块帮助模块提供的功能时当前玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规则和游戏相关提示的含义。系统流程描述系统的主体处理流程如图(f)所示。开始功能选择按成绩浏览排行榜帮助开始游戏退出显示排行榜最好记录产生原始数字产生新记录提示成功提示玩家游戏失败产生新记录提示成功是否成功结束是否是否否是是否10次之内用户猜数字是否成功 (f)(三)详细设计1.游戏模块设计模块描述游戏区模块是猜数字游戏软件的核心部分,用户进入模块后,系统会调用读取最好记录模块的功能,向用户显示目前排行榜中榜首玩家姓名和成绩。之后,系统产生四个按任意顺序拍了的随机数,并提供给玩家10次机会,提示玩家进行猜数字过程,并在玩家每一次猜数后都给玩家当前猜测结果的提示。a表示位置和数值均正确,b表示数值正确但位置不正确。当玩家猜测次数超过10次,则提示玩家失败,如在10次内猜对,则祝贺玩家并调用产生记录模块,看玩家是否进入排行榜。源文件定义start.cscore.h函数的声明vido mian()函数功能:软件执行的入口,在函数所在的程序头部包含了部分系统必需的头文件和完成其他功能的源文件。在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些和这些功能的选项代码。并给用户提供了输入功能选项代码的接口,当用户输入选项代码后,则显示给用户相应的功能处理界面或结果。输入:用户想要使用的系统功能代码。处理:a.接受玩家输入的选项代码b.引导玩家进入相应的功能界面。输出:a. 系统功能选择平台。b. 相应的功能界面2. 游戏功能模块开始游戏和进行游戏过程,调用readrecord()/*读取破记录的函数 */,提示玩家依次猜数字,每次给出提示。在10次内未猜出则失败;成功,则调用resetrecord(n3)/*看是否能进入排行榜*/。程序: void startprogram()readrecord(); n1=0;n3=0;getnumber();printf(n请输入你猜测的数字:);while(n14&n310)+n3;n1=0;n2=0;for(i=1;i=4;i+)printf(n请输入第 %d 位数字:,i);scanf(%d,&bi);for(i=1;i=4;i+)if(ai=bi)n1+;continue;for(j=1;j=10)printf(你失败了 ,答案是: %d %d %d %d,a1,a2,a3,a4);elseprintf(恭喜你!你在 %d 次内猜出了正确答案n,n3);resetrecord(n3);printf(请按任意键继续.n);fflush(stdin);getch();void getnumber()srand( (unsigned)time( null ) ); for(i=1;i=1;j-)if(ai=aj) goto loop2;3.排行榜模块函数声明.void sortby score()函数功能:按玩家成绩浏览排行榜信息。列表显示至屏幕。输入:在系统功能选择界面中输入该功能的功能选项代码。处理:a. 读取排行榜文件。b. 将文件中排行榜记录存入数组。c. 将数组中数据用选择法排序。d. 将排序后数据重新写入排行榜e. 将排序好的文件列表输入到屏幕输入:按成绩排序好的排行榜列表。程序:void sortbyscore()int i,j,k;player temps;player s5;int recnumber=0;char datafile10=record;file *fp=null;/clrscr();system(cls);fp=fopen(datafile,rb);if(fp=null)printf(n打开文件 %s 失败 !按任意键结束.n,datafile);perror(open file fail);fflush(stdin);getch();return;while(fread(&srecnumber,sizeof(player),1,fp)!=(int)null)recnumber+;fclose(fp);if(recnumber1)for(i=0;irecnumber-1;i+)k=i;for(j=i+1;jsj.score) k=j;if(k!=i)strcpy(temps.name,);temps.score=sk.score;strcpy(,);sk.score=si.score;strcpy(,temps.name);si.score=temps.score;fp=fopen(datafile,wb+);if(fp=null)printf(n打开文件 %s 失败!按任意键结束.n,datafile);perror(open file fail);fflush(stdin);getch();return;for (i=0;irecnumber;i+)if(fwrite(&si,sizeof(player),1,fp)!=1)printf(n写入文件 %s 失败!按任意键结束.n,datafile);perror(write file fail);fflush(stdin);getch();return;fclose(fp);printf(the players score as flow:n);fp=fopen(datafile,rb);if(fp=null)printf(n打开文件 %s 失败!按任意键结束.n,datafile);perror(open file fail);fflush(stdin);getch();return;printf(nnamettscoren);while(fread(&temps,sizeof(player),1,fp)!=(int)null)printf(%stt%dn,temps.name,temps.score);fclose(fp);printf(按任意键继续.);fflush(stdin);getch();4.产生新记录模块源文件定义reset.c函数声明resetrecord()函数5.读取游戏记录模块源文件定义readrec.c函数声明readrecord()函数setrecord()函数6.帮助模块源文件定义help.c函数声明printhelp()函数五,测试打开游戏:猜数字按3进入帮助菜单查看游戏方法按任意键回到主菜单后,按1回车,进入游戏根据提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房产置换合伙协议中介主导条款及佣金分配合同
- 2025版货车运输承包合同(含智能调度系统)
- 二零二五年度物业租赁居间服务合同范本正规范本
- 二零二五年度厂区特色屋顶绿化景观施工合同
- 2025版环保产业污染治理设施抵押借款合同
- 二零二五年度荒山承包合同范本:生态修复与景观建设
- 二零二五年度劳动合同补充协议:企业可持续发展与员工权益保障
- 2025版房地产信托附加协议书范本
- 二零二五年度典当公司担保与保险服务合同
- 2025至2030年中国浴擦行业市场发展现状及投资战略咨询报告
- 眼耳鼻喉常见病课件
- 2025年新疆生产建设兵团国有企业招聘笔试参考题库含答案解析
- 电商采购供货协议范本
- 冠心病护理模板(2025年独家版)
- 2025河南郑东新区招聘事业单位工作人员48人(第二批)高频重点提升(共500题)附带答案详解
- 6S精细化管理成果
- 知识产权贯标体管理体系整体文件一二三级文件 手册程序制度文件
- 2024年医院医疗纠纷预防与法律法规培训解析
- 《中医饮食护理》课件
- 《无人机飞行操控技术(微课版)》全套教学课件
- 银行运营管理新员工培训
评论
0/150
提交评论