程序设计猜单词汇总_第1页
程序设计猜单词汇总_第2页
程序设计猜单词汇总_第3页
程序设计猜单词汇总_第4页
程序设计猜单词汇总_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计报告(2014/15学年第一学期)题目:猜字游戏专业组长学号姓名组员学号姓名教师单位组长()调试程序程序代码(选择等级的功能、记录排名的功能)灵a茸当见旃力、呈美T内£扁技专注1戈肯灵a评分斑511平分页秀中享差守学习想复匕1遮抗可:艮专简短评语月名年日评分等级备注级良及格评等五中及分共爪不猜单词课题内容和要求这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-PP-;设置选择时间限制或猜错次数限制,超过限制则游戏失败。1-5个字母为初级

2、;5.9个字母为中级;10个字母以上为高级,猜错次数限制自定。1 .设计游戏者信息格式,记录用户名、成绩,并保存,下次开始时可选择用户继续游戏,用户信息存放2 .在user.txt中。建立积分排行榜,保留不同级别前五名的成绩。3 .根据单词长度设置不同级别的游戏。4 .游戏过程中,猜错的字母将被记录下来,每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。5 .提供相应安全机制,保证程序的健壮性,如选择单词长度时,应避免非数字字符的输入造成程序出错等。6 .提供选择一次求助机会。如显示单词一秒钟,或给出指定位置上的一个字母二、需求分析功能框架图如图1所示。王采单d

3、帮助s设置图1功能框架图(1)新游戏:提供进入游戏的功能。(3)排行:提供建立成绩积分表,保留不同级别前五名成绩的功能(3)设置:提供选择猜测次数和难度等级的功能。(4)帮助:提供游戏说明的功能。(5)退出:提供退出游戏的功能。三、概要设计1主要结构体typedefstructPlayer(intranker;charname20;/玩家姓名intright;/猜对的字母intwrong;/猜错的字幕inttime;/猜单词的时间Player;2主要函数流程图用VoidPlayGame(作为主体来进行游戏。如图2开始判断是否超过猜测次数否/是输入猜测字母guess是判断是否猜过否判断字母是否正

4、确存在给guessword赋值给wrongword赋值结束图2函数结构图四、源程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>intrank=7,tot=05guesstime=10;doublestart_time,end_time;typedefstructPlayer(intranker;charname20;intright;intwrong;inttime;JPlayer;Playerp5=1/

5、,unknown,0,0,0,2;,unknown"J0,0,0J3,Munknown,0J0J0J4;,unknownM,0,0,0,5,"unknown,J0,0.0);Playertemp;intright=05wrong=0;inttimes;charwordlist100020;voidget_word();voidchooose_len();voidchoose_guesstime();voidinput_name();voidCompare();voidRecord();voidPlayGame();voidMenu();intmain(intargc,cha

6、r*argv)(get_word();while(1)/使得猜完单词或查看完排行榜后返回主菜单(Menu();return0;voidget_word()FILE*fp;if(fp=fopen(,'d:/word.txt",'r+,)=NULL)读文件(printf("单词库无法打开!n“);exit(O);elsewhile(fscanf(fp/'%sf,wordlisttot+)!=EOF);voidchooose_len()ag:printf("请选择最大单词长度:(范围5-15)");scanf("%d"

7、;,&rank);if(rank<1)gotoag;voidchoose_guesstime()(printf("请输入你想猜的次数:”);scanf(H%d",&guesstime);voidinput_name()(printf("请先输入您的大名:”);scanf(”s”,);voidStartGame()(while(1)(inti;charplay;printf(n请输入你要猜的字母,每次一个,祝你好运哦!n");PlayGame(wordlist);temp.time=times;temp.right=

8、right;temp.wrong=wrong;Compare();Record();printf("是否再玩一次?(Y/N)n");scanf("%c",&play);if(play!='n')continue;elsebreak;printf(Mn");)voidCompare()(inti;for(i=0;i<6;i+)(if(temp.right>pi.right)(strcpy(,);pi.right=temp.right;pi.wrong=temp.wrong;pi.

9、time=temp.time;break;voidRecord()(inti;FILE*fp;fp=fopen("d:/record.txt","w+n);printf("游戏记录无法打开!”);ex计;fprintfp/M11名次t姓名tt成绩:猜对or猜错)t时间(s)n");for(i=0;i<5;i+)fprintf(fp,"%dt%sttRight:%dWrong:%dt%dn",i+1,,pi.right,pi.wrong,pi.time);fclose(fp);voidShow()(inti

10、;FILE*fp;charous200;fp=fopen("d;/record.txt","r+");if(!fp)printf("游戏记录无法打开!n");ex让;while(fgets(ous,256,fp)puts(ous);fclose(fp);void PlayGame()charguess;存用户打入的字母charplay;charguessword20,WrongGuess20;intc=1,l,j,f,k=O;intq;intx=O,t=O;intflag=0;while(1)iguess=play=l=j=f=k=q

11、=x=t=flag=O;for(c=0;c<20;+c)<guesswordc=WrongGuessc=0'c=1;start_time=(double)clock()/CLOCKS_PER_SEC;开始时间ag2:srand(time(NULL);q=rand()%tot;/printf("TheTrueLetteris%sn",worldlistq);/查看程序随机选到的单词,调试时使用l=strlen(wordlistq);if(l>rank)gotoag2;求单词长for(f=0;f<l;f+)guesswordf='-

12、9;/定义词一空单词,词长与所选一样guesswordl=,0,;字符串结尾printf(,%sH,guessword);/打印与词长相同的for(k=1;k<=guesstime&&c!=0;)/判断是否猜完flag=O;printf(“你有d次机会!nn,guesstime-k+1);scanf("%c",&guess);for(j=0;j<l;j+)/循环判断单词中是否有所输入字母if(guesswordj=,-')/判断是否猜过这个字母(if(wordlistqj=guess|wordlistqj-guess=-32)如果

13、单词中有这个字母guesswordj=wordlistqj;/在空单词中打入这个字母X+;flag=1;如果猜过这个字母则提elseif(guesswordj=guess|guesswordj-guess=32)示(仅提示猜过的正确的字母)(printf("你已经输入过这个字母了An");break;)if(flag=0)/如果单词中没有这个字母(WrongGuesst=guess;t+;k+;)printf(H%sn,guessword);c=strcmp(guessword,wordlistq);if(c=O)printf("你真聪明!你猜出了这个单词!n正确

14、单词就是:s”,wordlistq);right+;)elseprintf("你已经超过了规定的次数,你失败了!n正确单词是:swordlistq);wrong+;printf("你猜对了%d个字母。n”,x);printf("你猜错了<1个字母。n",k-1);WrongGuesst='0'printf("错误单词是%sn",WrongGuess);end_time=(double)clock()/CLOCKS_PER_SEC;printf(HTimeused=%.2lfsn",end_time-st

15、art_time);printf(n是否再玩一次?(y/n)nH);scanf("%c",&play);if(play!=,n,)continue;elseexit(O);voidMenu()intchoice;system("title猜字母游戏Asmallgametoguessacertainword");system("colorf2");printf(',nH);printfC1n");printf(nprintf(nn");*A small game to guess a certain

16、word. Good Luck!n");printf(H*printf(H printf(n printf(M printf(n printf(n»»»»»»»»»»»»»»»»»»»»»»»»»1.开始游戏«««««nn);2.设置游戏Q成绩排行/帮助4 .5 .退出游戏printf(,

17、fprintf()printf(n请输入你的选择:”);scanf("%d",&choice);while(choice<1|choice>5)printf(HPleasechoice1-5againnH);scanf("%d",&choice);switch(choice)/选择case 2:chooose_len();case1:input_name();StartGame();调用游戏函数break;case 3:Show();break;case 4:printf("游戏规则:n");printf(

18、"这是一个简单的智力游戏,游戏者每次只能猜一个字母n");printf(“如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出n");printf("例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为printf_pp_.n“);("设置选择时间限制或猜错次数限制,超过限制则游戏失败n”);printf(“1-5个字母为初级;59个字母为中级;10个字母以上为高级,猜错次数限制自定M);break;case 5:printf("欢迎下次来玩n");exit(0);五、测试数据及其结果分析0

19、(>0哈廿合zAsmallgametogfuessacertainwordGoodLuck*>>»»>»> >»> >»>» >»>»>> » >»>»>»> > »»»>»1开女石避戏3: ill4 .橹助5逍由游戏<«<<«<««««&#

20、171;«<«<<««<<<««<«<«««««5请输入你的选择:4这是一个番韶曹力游戏,-游戏董每次字才量词中耕看的谒丰母瑕破视为如果游戏者猜他字曾在单词孔设虬工17个字母为52T于母;曩抵落舟司tm的残缺单词为级,猜错次数限制自定Good Luck!戏戏行戏CKPl_0哈0合24smallgametoguessAcertainword>»>»>>»1.A»

21、87;»»»»»»»»>>»»>>»A»»»»»4.fIT姓名unknovnunknownunknown4unknown5unknown成绩,猜对“猜错Right:0Wrongr:0Right:0WronAf:0RlAht:OWrong;0Right:8Wrong:0Right:0Uronq:0肠WK:范围皿4请靳弟逾、"八:mai彳尔有a袂机母每欢一个祝你好运哦?会?你有号次机会?F心士73、由1&q

22、uot;人_你有7次机去!你有石次机会?h->l你有石次机会?h土h你有弓袂机会?hi.fi你有4次机会¥:Ah你有却次机会?Phh你有2次机会?:i你有i次机会?h却谨真聪曙,你猜出了这个单词?正礁虽词就v=high你猜对了4个字母。昔误星<y/n>词是nfjlupspsrineused=31,37s是否再玩一次?nPi*essanykeytocontinue结果分析:1)在输入菜单选项时如果输入的内容不是1-0之间的数字,而是其他数字,系统将继续执行等待下次正确的输入2)要建立word还有record文件才可以正常运行。六'调试过程中的问题1)是时间函数

23、的添加,先在没有猜之前提取一次时间,然后再在猜完之后提取一次时间然后,两次的时间差为猜单词所需要的时间。一定要先定义doublestart_time,endjime;然后才可以应用的,while(1)guess=play=l=j=f=k=q=x=t=flag=O;for(c=0;c<20;+c)guesswordc=WrongGuessc='0'c=1;start_time=(double)clock()/CLOCKS_PER_SEC;开始时间ag2:srand(time(NULL);q=rand()%tot;/printf(nTheTrueLetteris%sn,3worldlistq);/查看程序随机选到的单词,调试时使用先提取开始的时间l=strlen(wordlistq);printf(H错误

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论