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

下载本文档

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

文档简介

1、程序设计报告( 2014 / 15 学年 第 一 学期)题 目:猜字游戏 专 业 组长 学号姓名 组员 学号姓名 指 导 教 师 指 导 单 位 日 期 成员分工组长()调试程序程序代码(选择等级的功能、记录排名的功能)组员()编辑报告程序报告(实现进行游戏的功能、显示菜单的功能)组员()评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语 教师签名: 年 月 日评分等级备注评分等级共五种:优秀、良好、中等、及格、不及格猜单词一、 课题内容

2、和要求这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp-;设置选择时间限制或猜错次数限制,超过限制则游戏失败。1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定。1.设计游戏者信息格式,记录用户名、成绩,并保存,下次开始时可选择用户继续游戏,用户信息存放2.在user.txt中。建立积分排行榜,保留不同级别前五名的成绩。3.根据单词长度设置不同级别的游戏。4.游戏过程中,猜错的字母将被记录下来,每次猜测后,游戏应显示出当

3、前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。5.提供相应安全机制,保证程序的健壮性,如选择单词长度时,应避免非数字字符的输入造成程序出错等。6.提供选择一次求助机会。如显示单词一秒钟,或给出指定位置上的一个字母二、 需求分析功能框架图如图1所示。主菜单(1)新游戏(3)设置(2)排行(4)帮助(5)退出难度次数图1 功能框架图(1)新游戏:提供进入游戏的功能。(3)排行:提供建立成绩积分表,保留不同级别前五名成绩的功能。(3)设置:提供选择猜测次数和难度等级的功能。(4)帮助:提供游戏说明的功能。(5)退出:提供退出游戏的功能。三、概要设计 1 主要结构体typedef struc

4、t Playerint ranker;char name20;/玩家姓名 int right; /猜对的字母int wrong; /猜错的字幕int time; /猜单词的时间Player;2 主要函数流程图 用Void PlayGame()作为主体来进行游戏。如图2 开始判断是否猜过输入猜测字母guess判断字母是否正确存在给guessword赋值给wrongword赋值判断是否超过猜测次数结束 图2 函数结构图四、源程序代码 #include <stdio.h>#include <string.h> #include <stdlib.h>#include

5、 <time.h>#include <conio.h>int rank=7,tot=0,guesstime=10;double start_time,end_time;typedef struct Playerint ranker;char name20; int right;int wrong;int time;Player;Player p5=1,"unknown",0,0,0,2,"unknown",0,0,0,3,"unknown",0,0,0,4,"unknown",0,0,0,5

6、,"unknown",0,0,0;Player temp;int right=0,wrong=0;int times;char wordlist100020;void get_word();void chooose_len();void choose_guesstime ();void input_name();void Compare();void Record();void PlayGame();void Menu();int main(int argc, char *argv)get_word();while(1) /使得猜完单词或查看完排行榜后返回主菜单Menu()

7、;return 0;void get_word()FILE *fp; if(fp=fopen("d:/word.txt","r+")=NULL) /读文件 printf("单词库无法打开!n"); exit(0); elsewhile(fscanf(fp,"%s",wordlisttot+)!=EOF);void chooose_len() ag:printf("请选择最大单词长度:(范围5-15)"); scanf("%d",&rank);if(rank<1)

8、goto ag;void choose_guesstime ()printf("请输入你想猜的次数:");scanf("%d",&guesstime);void input_name()printf("请先输入您的大名:");scanf("%s",);void StartGame ()while(1)int i; char play; printf("请输入你要猜的字母,每次一个,祝你好运哦!n"); PlayGame(wordlist); temp.time=time

9、s; temp.right=right; temp.wrong=wrong;Compare();Record(); printf("是否再玩一次?(Y/N)n"); scanf(" %c",&play); if(play!='n') continue; else break; printf("n");void Compare()int i;for(i=0;i<6;i+)if(temp.right>pi.right) strcpy(,);pi.right=temp.ri

10、ght;pi.wrong=temp.wrong;pi.time=temp.time;break;void Record()int i;FILE *fp;fp=fopen("d:/record.txt","w+");if(!fp)printf("游戏记录无法打开!");exit(1); fprintf(fp,"111名次t姓名tt成绩:猜对 or 猜错)t时间(s)n");for(i=0;i<5;i+)fprintf(fp,"%dt%sttRight:%d Wrong:%dt%dn",i+1

11、,,pi.right,pi.wrong,pi.time);fclose(fp);void Show()int i;FILE *fp;char ous200;fp=fopen("d;/record.txt","r+");if(!fp)printf("游戏记录无法打开!n");exit(1);while(fgets(ous,256,fp)puts(ous);fclose(fp);void PlayGame()char guess;/存用户打入的字母char play;char guessword20,WrongGuess20

12、;int c=1,l,j,f,k=0;int q;int x=0,t=0;int flag =0;while(1) guess=play=l=j=f=k=q=x=t=flag=0;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("The True Letter is %sn",worldlistq); /查看程序随机选到的单词,调试

13、时使用l=strlen(wordlistq);if(l>rank)goto ag2; /求单词长for(f=0;f<l;f+)guesswordf='-' /定义词一空单词,词长与所选一样guesswordl='0' /字符串结尾printf("%s",guessword);/打印与词长相同的"-"for(k=1;k<=guesstime && c!=0;) /判断是否猜完 flag=0;printf("你有%d次机会!n",guesstime-k+1);scanf(&

14、quot; %c",&guess);for(j=0;j<l;j+) /循环判断单词中是否有所输入字母if(guesswordj='-' ) /判断是否猜过这个字母if(wordlistqj=guess|wordlistqj-guess=-32) /如果单词中有这个字母guesswordj=wordlistqj;/在空单词中打入这个字母x+; flag = 1;else if(guesswordj=guess|guesswordj-guess=32) /如果猜过这个字母则提示(仅提示猜过的正确的字母)printf("你已经输入过这个字母了.n&q

15、uot;);break;if(flag = 0) /如果单词中没有这个字母WrongGuesst = guess ;t+;k+;printf("%s",guessword); c=strcmp(guessword,wordlistq); if(c=0) printf("你真聪明!你猜出了这个单词!n正确单词就是:%s",wordlistq);right+;elseprintf("你已经超过了规定的次数,你失败了!n正确单词是:%s",wordlistq);wrong+;printf("你猜对了%d个字母。n",x)

16、;printf("你猜错了%d个字母。n",k-1);WrongGuesst = '0'printf("错误单词是%sn",WrongGuess);end_time=(double)clock()/CLOCKS_PER_SEC;printf("Time used = %.2lf sn",end_time-start_time);printf("是否再玩一次?(y/n)n");scanf(" %c",&play);if(play!='n')continue;

17、elseexit(0);void Menu() int choice;system("title 猜字母游戏-A small game to guess a certain word");system("color f2");printf("n");printf(" * 猜单词游戏 * n");printf(" A small game to guess a certain word. Good Luck! n");printf("n");printf(" *n&q

18、uot;);printf(" >>>>>>>>>> 1. 开始游戏 <<<<<<<<<<n");printf(" >>>>>>>>>> 2. 设置游戏 <<<<<<<<<<n");printf(" >>>>>>>>>> 3. 成绩排行 <<

19、;<<<<<<<<n"); printf(" >>>>>>>>>> 4. 帮助 <<<<<<<<<<n");printf(" >>>>>>>>>> 5. 退出游戏 <<<<<<<<<<n");printf(" *n");printf()pri

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

21、");printf(" 这是一个简单的智力游戏,游戏者每次只能猜一个字母 n");printf(" 如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出 n");printf(" 例如:如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp-n");printf(" 设置选择时间限制或猜错次数限制,超过限制则游戏失败 n");printf(" 1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定n");break;case 5:

22、printf("欢迎下次来玩n");exit(0);五、测试数据及其结果分析结果分析:1)在输入菜单选项时如果输入的内容不是1-0之间的数字,而是其他数字,系统将继续执行等待下次正确的输入 2)要建立word还有record文件才可以正常运行。六、调试过程中的问题1)是时间函数的添加,先在没有猜之前提取一次时间,然后再在猜完之后提取一次时间然后,两次的时间差为猜单词所需要的时间。一定要先定义double start_time,end_time;然后才可以应用的,while(1) guess=play=l=j=f=k=q=x=t=flag=0;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("The True Letter is %sn",worldlistq); /查看程序随机选到的单词,调试时使用先提取开始的时间l=strlen(wordlistq);printf("错误单词是%sn",WrongGuess);end_time=(

温馨提示

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

评论

0/150

提交评论