




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计报告( 2011 / 2012 学年 第 二 学期)题目: 猜单词游戏 专 业 光电信息工程 学 生 姓 名 梅阳阳 班 级 学 号 B11030506 指 导 教 师 李鹏 指 导 单 位 计算机学院 计算机系统与网络教学中心日 期 2012.06.042012.06.13 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 2012 年 6 月 20 日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格题目1:猜单词一、 课题内容和要求要求用C或C+模拟猜单词游戏。游戏包括:单词管理、玩家纪录、猜词过程、系统设置等必须完成的基本功能以及成绩计算、猜词时间限制、词库管理等选做的扩展功能。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。二、需求分析1. 基本要求。(1) 单词管理:程序中用来做谜题的单词必须存放在磁盘文件中。(2) 猜词过程:先请用户输入猜的单词数量,可以有一个默认值。随机抽取单词,对每个单词,系统根据谜底单词长度在屏幕上显示相应个数-,假设谜底单词为hello,则在屏幕上输出-。玩家输入一个字母进行猜测,如果这个字母不在单词中,系统提示玩家不对;如果猜对字母,比如玩家输入了一个l,则在屏幕上输出-ll-。重复,直到玩家在规定的次数内猜出了单词或者超过次数游戏失败。显示玩家每个单词猜对与猜错次数等统计信息。如果玩家猜出单词,计算成绩,如进入前五名提示玩家并记录存储到记录文件中。询问玩家是否开始新一轮猜词,如果玩家选“否”,则系统退到外面的菜单。(3) 系统设置:猜词次数可以为默认值。玩的时候,可以对其进行修改。 2. 扩展要求。 (1) 成绩计算:考虑各种情况下所设计的成绩计算方法是否合理。 (2) 玩家纪录:程序要求记录前五名成绩。成绩指标自行设计,必须包括时间。记录的时候要求有排名、玩家姓名、成绩三项,并保存在文件中。在程序开始运行的时候就必须读入,以便随时供玩家查询、及时更新成绩。三、概要设计 1、主要结构体:struct Playerchar name20;/玩家姓名 int right;/猜对字母数int wrong;/猜错字母数int time;/猜单词的时间;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():将最新的游戏成绩记录通过文件读写,从内存中保存到原文本文件中游戏操作是否继续结束YN四、详细设计 #include #include #include #include #include #include #include void OpenWordFile(char string2111);void PlayGame(char wordlist2111);void Change(char wordlist2111,char str2111);void StartGame (char wordlist2111);void Menu();int guesstime=10;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;void OpenWordFile (char string2111)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); void SetGame ()printf(请输入你想猜的次数:);scanf(%d,&guesstime);void PlayGame (char wordlist2111)char guess; /存用户打入的字母char guessword11;/存用户打入的词int l,j,k,f;int p=1,q=0,x=0,y=0;char WrongGuess11;int t=0;int flag=0; int c=1;/用来查看是否猜对所有字母right=0;srand(time(NULL);q=rand()%21;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 wordlist2111,char str2111)int i,j;for(i=0;i21;i+)for(j=0;j11;j+)wordlistij=strij; void Input()printf(您尊姓大名:);scanf(%s,);void Result()temp.right=right;temp.wrong=wrong;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 wordlist2111)int t1,t2,t; int p=1;t1=time(NULL);while(p)int i; char play; for(i=0;i 1. 开始游戏 2. 设置游戏 3. 成绩排行 4. 退出游戏 n);printf( *n);printf( 制作人: B110305 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);五、测试数据及其结果分析显示的主菜单界面:1、查看之前的游戏成绩排行榜;2、设置游戏; 3、开始猜单词游戏;4、进行游戏;5、游戏记录保存;6、查看游戏结束后更新过的成绩排行榜;1、查看之前的游戏成绩排行榜:输入:3输出:2、设置游戏:输入:2输出:请输入你想猜的次数:输入:20输出:请输入你想猜的单词数:输入:2输出:您尊姓大名:输入:梅阳阳输出:-高手过招-请输入你要猜的字母,每次一个!a - 你还有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次机会输入:ehelp你成功猜出了这个单词,算你狠,下次整个难点儿的!正确单词就是:help 你猜对了4个字母,猜错了4个字母。错误字母分别是:afrt共用时:23秒是否在玩一次?(Y/N)输入:N输出:请输入你的选择:5、游戏记录保存:6、查看游戏结束后更新过的成绩排行榜:输入:3输出:7、退出程序:输出:请输入你的选择:输入:4输出:Press any key to continue结果分析:1、当单词库文本和游戏记录文本无法读入时,系统将分别提示:“单词库无法打开”、“游戏记录无法打开!”2、在输入菜单选项时如果输入的内容不是1-4之间的数字,而是其他数字,系统将提示“请重新在14中选择”。3、当猜一个单词的次数超过预定次数时(默认为10次),系统将提示:“Sorry. 壮志未酬身先死. 正确单词是:” 4、当一轮游戏结束后,系统提示:“是否再玩一次?(Y/N)”,选y,重新开始游戏,选n,返回主菜单。六、调试过程中的问题1.函数的互相调用如果掌握不好调用顺序,就先全部声明,因为程序比较大了。2.事实证明while(1)在c语言中可用,不用担心死循环,因为可以用break,exit跳出循环。3.c语言中用以计时的算法有n中,我选择的是最简单适用的,但计时并不很准确,有待改进。4.目前为止,还没有行到该怎么控制程序运行时间,以时间控制程序的运行和停止,估计还是计时的算法需要更改。5. 之前看准了一个计时算法(运行一次耗时10ms)感觉计时比较精确就一直相融合到程序里来当计时工具,纠结了两天,以失败告终,很明显,我在运行计时程序会停下来等待。七、程序设计总结这是我学习c语言以来遇到的较为“庞大”的程序,324行嘞!很好地锻炼了我的思维(各种循环啊,乖乖)和记忆力(写到后面忘了前面)。接触了很多没学过的头文件windows.h,time.h, fstream.h, conio.h,感觉挺有意思的,激发了我继续学习c语言的兴趣!这几天遇到的最头
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基层员工安全风险防范能力测试题及答案解析
- 2025年工业互联网平台数字签名技术规范与设备能效管理报告
- 2025年新能源汽车电池回收与梯次利用商业模式创新报告
- 会展项目经理面试题及答案
- 2025年汽车与交通设备行业新能源汽车电池回收利用产业链分析报告
- 2025-2030工业软件行业竞争格局与技术升级路径分析报告
- 2025-2030工业视觉检测系统在质量管控环节渗透率测算研究
- 2025年赣州市信丰县招募三支一扶人数≥40人考前自测高频考点模拟试题及答案详解(易错题)
- 2025-2030工业级3D打印材料体系扩展趋势分析报告
- 2025-2030工业物联网环境下智能执行器市场生态演变研究
- 6.2 人大代表为人民 第二课时 课件 2025-2026学年六年级道德与法治 上册 统编版
- 2025年甘肃省金川集团股份有限公司技能操作人员社会招聘400人考试参考试题及答案解析
- T/CIE 189-2023硫化物全固态锂电池
- 借游戏账号合同5篇
- 2025年中职政治专业资格证面试技巧与答案解析大全
- 炎德·英才大联考长郡中学2026届高三月考试卷(一)生物试卷(含答案)
- 3.4 活动:电路创新设计展示说课稿 2023-2024学年教科版物理九年级上册
- 2025小学道德与法治开学第一课(思想政治理论教育课)
- 异博定治疗方案
- 申请法院司法赔偿申请书
- 锻造操作机安全检查表模版
评论
0/150
提交评论