




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计报告(2010/2011学年 第一学期)题 目: 猜单词游戏 专 业 网络工程 学 生 姓 名 杜昊阳 班 级 学 号 B09011422 指 导 教 师 徐小龙 指 导 单 位 计算机学院计算机科学与技术系日 期 2010年11月5日 南京邮电大学程序设计指导教师成绩评定表题目学生姓名班级学号专业评分内容评分标准优秀良好中等差平时成绩认真对待课程设计,遵守实验室规定,上机不迟到早退,不做和设计无关的事。设计成果设计的科学、合理性功能丰富、符合设题目要求 界面友好、外观漂亮、大方设计的原创性设计报告设计报告正确合理、反映系统设计流程文档内容详实程度文档格式规范、排版美观答辩简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。评分等级优秀 良好 中等 及格 不及格指导教师签章日期2011-11-5备注评分等级有五种:优秀、良好、中等、及格、不及格猜单词游戏一、 课题内容和要求一)课题内容要求用C或C+模拟猜单词游戏。游戏包括:单词管理、玩家纪录、猜词过程、系统设置等必须完成的基本功能以及成绩计算、猜词时间限制、词库管理等选做的扩展功能。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。(二)课题要求(1) 单词管理:程序中用来做谜题的单词必须存放在磁盘文件中,文件中的单词数不得少于200个。(2) 玩家纪录:程序要求记录前五名成绩。成绩指标自行设计,必须包括时间。记录的时候要求有排名、玩家姓名、成绩三项,并保存在文件中。在程序开始运行的时候就必须读入,以便随时供玩家查询、及时更新成绩。(3) 猜词过程:先请用户输入猜的单词数量,可以有一个默认值。随机抽取单词,对每个单词,系统根据谜底单词长度在屏幕上显示相应个数-,假设谜底单词为hello,则在屏幕上输出-。玩家输入一个字母进行猜测,如果这个字母不在单词中,系统提示玩家不对;如果猜对字母,比如玩家输入了一个l,则在屏幕上输出-ll-。重复,直到玩家在规定的次数内猜出了单词或者超过次数游戏失败。显示玩家每个单词猜对与猜错次数等统计信息。如果玩家猜出单词,计算成绩,如进入前五名提示玩家并记录存储到记录文件中。询问玩家是否开始新一轮猜词,如果玩家选“否”,则系统退到外面的菜单。(4) 系统设置:猜词次数可以为默认值。玩的时候,可以对其进行修改。 设置游戏进行游戏查看游戏排 行 榜游戏次数猜单词次 数猜单词游戏二、 需求分析功能框架图如右:1、 提供可操作的主菜单:输出4个菜单,用于显示若干个可选的功能选项。根据玩家输入的选项来运行不同的功能,运行不同的函数。2、 进行文本信息的载入:从指定的文件中以一维数组形式加载游戏玩家记录信息这里的文件是在编译时就已经指定好的、存在的文本,需设计者预先自己建立好。3、 设置游戏功能:以客户输入的猜单词游戏次数和猜的单词数目进行游戏功能的个性化修改。4、 猜词过程:随机抽取单词,对每个单词,系统根据谜底单词长度在屏幕上显示相应个数-。玩家输入一个字母进行猜测,如果这个字母不在单词中,系统提示玩家不对;如果猜对字母,则替换单词中相应位置的“-”。直到玩家在规定的次数内猜出了单词或者超过次数游戏失败。显示玩家每个单词猜对与猜错次数等统计信息。如果玩家猜出单词,计算成绩,满足进入记录前五名的记录写入到记录文件中覆盖原纪录。询问玩家是否开始新一轮猜词,如果玩家选“否”,则系统退到外面的菜单。5、 查看更新过的游戏排行榜:退回主界面选3,打开之前进行游戏时重新写入过的记录文件。三、概要设计 1、主要结构体/类:struct Playerchar name20;/玩家姓名 int right; /猜对的字母int wrong; /猜错的字幕int time; /猜单词的时间;class ByTimeprivate:clock_t start;public:ByTime()start=clock(); /开始计时ByTime(); /析构函数void Endtime()clock_t end;end=clock(); /结束计时times=(end-start)/CLOCKS_PER_SEC; /计算时间cout共用时:times秒endl; /输出时间;2、主要函数:(1)文件打开函数void OpenWordFile(char string20012):设计思想一致,用于打开单独储存的单词库及游戏记录txt文件。(2)设置函数void set(),void Setgame:用于设置游戏中猜单词的次数与数目。(3)“玩游戏”函数:void PlayGame (char wordlist20012):用于对玩家输入的字母进行处理与判断(4)“开始游戏”函数void StartGame (char wordlist20012):将OpenWordFile (str); Change (wordlist,str);PlayGame(wordlist)等函数统一调用(5)记录显示函数void Show():用于将写入过新纪录的文件显示到屏幕上。(6)记录读入函数void Record():将最新的游戏成绩记录通过文件读写,从内存中保存到原文本文件中四、源程序代码 #include #include #include #include #include #include void OpenWordFile(char string20012);void PlayGame(char wordlist20012);void Change(char wordlist20012,char str20012);void StartGame (char wordlist20012);int round;void Set() printf(请输入您想猜的单词数:);scanf(%d,&round);struct Playerchar name20; int right;int wrong;int time;typedef struct Player Player;Player p5=1,unknown,0,0,0,2,unknown,0,0,0,3,unknown,0,0,0,4,unknown,0,0,0,5,unknown,0,0,0;Player temp;int right=0,wrong=0;int times;class ByTimeprivate:clock_t start;public:ByTime()start=clock();ByTime();void Endtime()clock_t end;end=clock();times=(end-start)/CLOCKS_PER_SEC;cout共用时:times秒endl; ;void OpenWordFile (char string20012)FILE *fp; char c; int i=0; int j=0; if(fp=fopen(word.txt,r)=NULL) /读文件 printf(单词库无法打开!n); exit(0); elsec=fgetc(fp); while(c!=EOF) if(c!=n) stringij=c; j+; else i+; j=0; c=fgetc(fp); int guesstime=10;void SetGame ()printf(请输入你想猜的次数:);scanf(%d,&guesstime);void PlayGame (char wordlist20012)char guess; /存用户打入的字母char guessword12;/存用户打入的词int l,j,k,f;int p=1,q=0,x=0,y=0;char WrongGuess12;int t=0;int flag=0; int c=1; /用来查看是否猜对所有字母srand(time(NULL);q=rand()%200;l=strlen(wordlistq); /求单词长for(f=0;fl;f+) /定义词一空单词,词长与所选一样guesswordf=-;guesswordl=0; /字符串结尾printf(%s,guessword);/打印与词长相同的-for(k=1;k=guesstime & c!=0;) /判断是否猜完 flag = 0; printf(你还有%d次机会!n,guesstime-k+1);scanf( %c,&guess);for(j=0;jy) y=x; elsek+; c=strcmp(guessword,wordlistq); if(c=0)printf(nHow smart you are! 你成功猜出了这个单词!n正确单词就是:%s,wordlistq);right+;if(c!=0)printf(nSorry. 你已经超过了规定的次数,挑战失败了.n正确单词是:%s,wordlistq);wrong+;printf(你猜对了%d个字母,猜错了%d个字母。n,x,k-1);WrongGuesst = 0;printf(错误字母分别是%sn,WrongGuess);void Change (char wordlist20012,char str20012)int i,j;for(i=0;i200;i+)for(j=0;j12;j+)wordlistij=strij; void Input()printf(请先输入您的大名:);scanf(%s,);void Result()temp.right=right;temp.wrong=wrong;void Time()temp.time=times;void Compare()int i,j,k;for(i=0;ipi.right) for(j=5;ji;j-)for(k=0;k20;k+)k=k;pj.right=pj-1.right; pj.wrong=pj-1.wrong; pj.time=pj-1.time;for(k=0;k20;k+)k=k;pi.right=temp.right;pi.wrong=temp.wrong;pi.time=temp.time;break;void Record()int i;FILE *fp;fp=fopen(record.txt,r+);if(!fp)printf(游戏记录无法打开!);exit(1); fprintf(fp,名次t姓名tt成绩:猜对 or 猜错)t时间(s)n);for(i=0;i5;i+)fprintf(fp,%dt%sttRight:%d Wrong:%dt%dn,i+1,,pi.right,pi.wrong,pi.time);fclose(fp);void Show()int i;FILE *fp;fp=fopen(record.txt,r);if(!fp)printf(游戏记录无法打开!n);exit(1);fprintf(stdout,名次t姓名tt成绩(猜对 猜错)t时间(s)n);for(i=0;i5;i+)fprintf(stdout,%dt%sttRight:%d Wrong:%dt%dn,i+1,,pi.right,pi.wrong,pi.time);fclose(fp);void StartGame (char wordlist20012)int p=1;while(p)int i; char play; ByTime t; for(i=0;i 1. 开始游戏 2. 设置游戏 3. 成绩排行 4. 退出游戏 n);printf( *n);printf( 制作人:杜昊阳 B09011422 n);printf(n);printf(请输入你的选择:);scanf(%d,&choice);while(choice4)printf(Please choice 1-4 againn);scanf(%d,&choice);switch (choice)/选择case 1:Set();Input();StartGame (wordlist);/调用游戏函数break;case 2:SetGame ();/调用设置函数Set();Input();StartGame (wordlist);break;case 3:Show();break;case 4:exit(0);五、测试数据及其结果分析显示的主菜单界面: * 猜单词游戏 * A small game to guess a certain word. Good Luck! * 1. 开始游戏 2. 设置游戏 3. 成绩排行 4. 退出游戏 *制作人:杜昊阳 B09011422请输入你的选择:1、查看之前的游戏成绩排行榜;2、设置游戏; 3、开始猜单词游戏;4、进行游戏;5、游戏记录保存;6、查看游戏结束后更新过的成绩排行榜;1、查看之前的游戏成绩排行榜:输入:3输出:名次 姓名 成绩:猜对 & 猜错 时间(s) 1 unknown Right:0 Wrong:0 0 2 unknown Right:0 Wrong:0 0 3 unknown Right:0 Wrong:0 0 4 unknown Right:0 Wrong:0 0 5 unknown Right:0 Wrong:0 02、设置游戏:输入:2输出:请输入你想猜的次数:输入:20输出:请输入你想猜的单词数:输入:2输出:请先输入您的大名:输入:Adu输出:请输入你要猜的字幕,每次一个,祝你好运哦! - 你还有20次机会!3、开始猜单词游戏:4、进行游戏:输出:请输入你要猜的字母,每次一个,祝你好运哦! - 你还有20次机会!输入:a输出:- 你还有19次机会输入:f输出:- 你还有18次机会输入:l输出:-l- 你还有18次机会输入:r输出:-l- 你还有17次机会输入:h输出:h-l- 你还有17次机会输入:t输出:h-l- 你还有16次机会输入:l输出:你已经输入过这个字母了 h-l- 你还有15次机会输入:p输出:h-lp 你还有15次机会输入:ehelpHow smart you are! 你成功猜出了这个单词正确单词就是:help 你猜对了4个字母,猜错了4个字母。错误字母分别是:afrt共用时:23秒是否在玩一次?(Y/N)输入:N输出:请输入你的选择:5、游戏记录保存:6、查看游戏结束后更新过的成绩排行榜:输入:3输出:名次 姓名 成绩:猜对 & 猜错 时间(s) 1 Adu Right:1 Wrong:0 23 2 unknown Right:0 Wrong:0 0 3 unknown Right:0 Wrong:0 0 4 unknown Right:0 Wrong:0 0 5 unknown Right:0 Wrong:0 07、退出程序:输出:请输入你的选择:输入:4输出:Press any key to continue结果分析:1、当单词库文本和游戏记录文本无法读入时,系统将分别提示:“”、“游戏记录无法打开!”2、在输入菜单选项时如果输入的内容不是1-4之间的数字,而是其他数字,系统将提示“请重新在14中选择”;若输入的为其他字符(字母或符号),系统将自动认为操作结束而退出系统。3、当猜一个单词的次数超过预定次数时(默认为10次),系统将提示:“Sorry. 你已经超过了规定的次数,挑战失败了. 正确单词是:” 4、当一轮游戏结束后,系统提示:“是否再玩一次?(Y/N)”,选y,重新开始游戏,选n,返回主菜单。六、调试过程中的问题1、文件读入问题:文件路径编写不正确,会造成读入失败,使得的程序可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绿色农产品冷链物流配送服务全面合作协议
- 2025年度绿色环保住宅区物业服务与生态修复合同
- 2025年度婚姻解除后财产分配及子女监护权抚养费协议书
- 2025年高端商业空间定制化设计与施工服务合同
- 2025年高性能压路机租赁与全系列施工材料配套服务合同
- 2025年度生物实验室场地租赁合同
- 2025年度工业厂房装修环保监测与风险评估合同
- 生态环保型办公空间租赁合同
- 2025医疗器械高效维修响应时间缩短及成本控制专项合同
- 2025年专业特种车辆长期租赁及操作培训服务协议
- 企业首席质量官职业技能竞赛竞赛题库(最后附答案)
- 人教版(2024新版)七年级上册英语全册教案
- 中建技术降本增效案例集
- 临床微生物学检验标本的采集和转运试卷
- 佳酿贺喜升学宴金榜题名踏新程热烈庆祝某同学金榜题名模板
- 2024生产安全事故隐患排查治理规定(修订征求意见稿)
- 2024年儿童保健考试复习题库(含答案)
- 02J401 钢梯【含03年修改】图集
- 罚款减免申请书范文(19篇)
- 健康管理中的营养监测与干预
- 共同黏膜免疫反应研究进展
评论
0/150
提交评论