程序设计猜单词汇总.docx

上传人:b****0 文档编号:10045739 上传时间:2023-05-23 格式:DOCX 页数:21 大小:262.96KB
下载 相关 举报
程序设计猜单词汇总.docx_第1页
第1页 / 共21页
程序设计猜单词汇总.docx_第2页
第2页 / 共21页
程序设计猜单词汇总.docx_第3页
第3页 / 共21页
程序设计猜单词汇总.docx_第4页
第4页 / 共21页
程序设计猜单词汇总.docx_第5页
第5页 / 共21页
程序设计猜单词汇总.docx_第6页
第6页 / 共21页
程序设计猜单词汇总.docx_第7页
第7页 / 共21页
程序设计猜单词汇总.docx_第8页
第8页 / 共21页
程序设计猜单词汇总.docx_第9页
第9页 / 共21页
程序设计猜单词汇总.docx_第10页
第10页 / 共21页
程序设计猜单词汇总.docx_第11页
第11页 / 共21页
程序设计猜单词汇总.docx_第12页
第12页 / 共21页
程序设计猜单词汇总.docx_第13页
第13页 / 共21页
程序设计猜单词汇总.docx_第14页
第14页 / 共21页
程序设计猜单词汇总.docx_第15页
第15页 / 共21页
程序设计猜单词汇总.docx_第16页
第16页 / 共21页
程序设计猜单词汇总.docx_第17页
第17页 / 共21页
程序设计猜单词汇总.docx_第18页
第18页 / 共21页
程序设计猜单词汇总.docx_第19页
第19页 / 共21页
程序设计猜单词汇总.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

程序设计猜单词汇总.docx

《程序设计猜单词汇总.docx》由会员分享,可在线阅读,更多相关《程序设计猜单词汇总.docx(21页珍藏版)》请在冰点文库上搜索。

程序设计猜单词汇总.docx

程序设计猜单词汇总

程序设计报告

(2014/15学年第一学期)

 

题目:

猜字游戏

 

专业

组长学号姓名

组员学号姓名

指导教师

指导单位

日期

成员分工

组长()

调试程序

程序代码(选择等级的功能、记录排名的功能)

组员()

编辑报告

程序报告(实现进行游戏的功能、显示菜单的功能)

组员()

 

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级共五种:

优秀、良好、中等、及格、不及格

猜单词

一、课题内容和要求

这是一个简单的智力游戏,游戏者每次只能猜一个字母,如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出,例如:

如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp--;设置选择时间限制或猜错次数限制,超过限制则游戏失败。

1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定。

1.设计游戏者信息格式,记录用户名、成绩,并保存,下次开始时可选择用户继续游戏,用户信息存放

2.在user.txt中。

建立积分排行榜,保留不同级别前五名的成绩。

3.根据单词长度设置不同级别的游戏。

4.游戏过程中,猜错的字母将被记录下来,每次猜测后,游戏应显示出当前猜出的残缺单词,以及当前猜错的所有字母,和剩下的机会。

5.提供相应安全机制,保证程序的健壮性,如选择单词长度时,应避免非数字字符的输入造成程序出错等。

6.提供选择一次求助机会。

如显示单词一秒钟,或给出指定位置上的一个字母

二、需求分析

功能框架图如图1所示。

 

图1功能框架图

(1)新游戏:

提供进入游戏的功能。

(3)排行:

提供建立成绩积分表,保留不同级别前五名成绩的功能。

(3)设置:

提供选择猜测次数和难度等级的功能。

(4)帮助:

提供游戏说明的功能。

(5)退出:

提供退出游戏的功能。

三、概要设计

1主要结构体

typedefstructPlayer

{

intranker;

charname[20];//玩家姓名

intright;//猜对的字母

intwrong;//猜错的字幕

inttime;//猜单词的时间

}Player;

2主要函数流程图

用VoidPlayGame()作为主体来进行游戏。

如图2

图2函数结构图

四、源程序代码

#include

#include

#include

#include

#include

intrank=7,tot=0,guesstime=10;

doublestart_time,end_time;

typedefstructPlayer

{

intranker;

charname[20];

intright;

intwrong;

inttime;

}Player;

Playerp[5]={{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}};

Playertemp;

intright=0,wrong=0;

inttimes;

charwordlist[1000][20];

voidget_word();

voidchooose_len();

voidchoose_guesstime();

voidinput_name();

voidCompare();

voidRecord();

voidPlayGame();

voidMenu();

 

intmain(intargc,char*argv[])

{

get_word();

while

(1)//使得猜完单词或查看完排行榜后返回主菜单

{

Menu();

}

return0;

}

voidget_word()

{

FILE*fp;

if((fp=fopen("d:

//word.txt","r+"))==NULL)//读文件

{

printf("单词库无法打开!

\n");

exit(0);

}

else

{

while(fscanf(fp,"%s",wordlist[tot++])!

=EOF);

}

}

voidchooose_len()

{

ag:

printf("请选择最大单词长度:

(范围5-15)");

scanf("%d",&rank);

if(rank<1)gotoag;

}

voidchoose_guesstime()

{

printf("请输入你想猜的次数:

");

scanf("%d",&guesstime);

}

voidinput_name()

{

printf("请先输入您的大名:

");

scanf("%s",temp.name);

}

voidStartGame()

{

while

(1)

{

inti;

charplay;

printf("请输入你要猜的字母,每次一个,祝你好运哦!

\n");

PlayGame(wordlist);

temp.time=times;

temp.right=right;

temp.wrong=wrong;

Compare();

Record();

printf("是否再玩一次?

(Y/N)\n");

scanf("%c",&play);

if(play!

='n')

continue;

else

break;

printf("\n");

}

}

voidCompare()

{

inti;

for(i=0;i<6;i++)

{

if(temp.right>p[i].right)

{

strcpy(p[i].name,temp.name);

p[i].right=temp.right;

p[i].wrong=temp.wrong;

p[i].time=temp.time;

break;

}

}

}

voidRecord()

{

inti;

FILE*fp;

fp=fopen("d:

//record.txt","w+");

if(!

fp)

{

printf("游戏记录无法打开!

");

exit

(1);

}

fprintf(fp,"111名次\t姓名\t\t成绩:

猜对or猜错)\t时间(s)\n");

for(i=0;i<5;i++){

fprintf(fp,"%d\t%s\t\tRight:

%dWrong:

%d\t%d\n",i+1,p[i].name,p[i].right,p[i].wrong,p[i].time);

}

fclose(fp);

}

voidShow()

{

inti;

FILE*fp;

charous[200];

fp=fopen("d;//record.txt","r+");

if(!

fp)

{

printf("游戏记录无法打开!

\n");

exit

(1);

}

while(fgets(ous,256,fp))puts(ous);

fclose(fp);

}

voidPlayGame()

{

charguess;//存用户打入的字母

charplay;

charguessword[20],WrongGuess[20];

intc=1,l,j,f,k=0;

intq;

intx=0,t=0;

intflag=0;

while

(1)

{

guess=play=l=j=f=k=q=x=t=flag=0;

for(c=0;c<20;++c)

{

guessword[c]=WrongGuess[c]='\0';

}

c=1;

start_time=(double)clock()/CLOCKS_PER_SEC;//开始时间

ag2:

srand(time(NULL));

q=rand()%tot;

//printf("TheTrueLetteris%s\n",worldlist[q]);//查看程序随机选到的单词,调试时使用

l=strlen(wordlist[q]);

if(l>rank)gotoag2;

//求单词长

for(f=0;f

guessword[l]='\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;j

{

if(guessword[j]=='-')//判断是否猜过这个字母

{

if(wordlist[q][j]==guess||wordlist[q][j]-guess==-32)//如果单词中有这个字母

{

guessword[j]=wordlist[q][j];//在空单词中打入这个字母

x++;

flag=1;

}

}

elseif(guessword[j]==guess||guessword[j]-guess==32)//如果猜过这个字母则提示(仅提示猜过的正确的字母)

{

printf("你已经输入过这个字母了.\n");

break;

}

}

if(flag==0)//如果单词中没有这个字母

{

WrongGuess[t]=guess;

t++;

k++;

}

printf("%s",guessword);

c=strcmp(guessword,wordlist[q]);

}

if(c==0)

{

printf("你真聪明!

你猜出了这个单词!

\n正确单词就是:

%s",wordlist[q]);

right++;

}

else

{

printf("你已经超过了规定的次数,你失败了!

\n正确单词是:

%s",wordlist[q]);

wrong++;

}

printf("你猜对了%d个字母。

\n",x);

printf("你猜错了%d个字母。

\n",k-1);

WrongGuess[t]='\0';

printf("错误单词是%s\n",WrongGuess);

end_time=(double)clock()/CLOCKS_PER_SEC;

printf("Timeused=%.2lfs\n",end_time-start_time);

printf("是否再玩一次?

(y/n)\n");

scanf("%c",&play);

if(play!

='n')

continue;

else

exit(0);

}

}

 

voidMenu()

{

intchoice;

system("title猜字母游戏---Asmallgametoguessacertainword");

system("colorf2");

printf("\n");

printf("********************猜单词游戏********************\n");

printf("Asmallgametoguessacertainword.GoodLuck!

\n");

printf("\n");

printf("**************************************\n");

printf(">>>>>>>>>>1.开始游戏<<<<<<<<<<\n");

printf(">>>>>>>>>>2.设置游戏<<<<<<<<<<\n");

printf(">>>>>>>>>>3.成绩排行<<<<<<<<<<\n");

printf(">>>>>>>>>>4.帮助<<<<<<<<<<\n");

printf(">>>>>>>>>>5.退出游戏<<<<<<<<<<\n");

printf("**************************************\n");

printf()

printf("请输入你的选择:

");

scanf("%d",&choice);

while(choice<1||choice>5)

{

printf("Pleasechoice1--5again\n");

scanf("%d",&choice);

}

switch(choice)//选择

{

case2:

chooose_len();

case1:

input_name();

StartGame();//调用游戏函数

break;

case3:

Show();

break;

case4:

printf("游戏规则:

\n");

printf("这是一个简单的智力游戏,游戏者每次只能猜一个字母\n");

printf("如果游戏者猜的字母在单词中,单词中所有的该字母将被视为已猜出\n");

printf("例如:

如果原单词是apple,游戏者猜出了p,则程序应显示当前猜出的残缺单词为-pp--\n");

printf("设置选择时间限制或猜错次数限制,超过限制则游戏失败\n");

printf("1-5个字母为初级;5-9个字母为中级;10个字母以上为高级,猜错次数限制自定\n");

break;

case5:

printf("欢迎下次来玩\n");

exit(0);

}

}

 

五、测试数据及其结果分析

 

 

结果分析:

1)在输入菜单选项时如果输入的内容不是1-0之间的数字,而是其他数字,系统将继续执行等待下次正确的输入

2)要建立word还有record文件才可以正常运行。

六、调试过程中的问题

1)是时间函数的添加,先在没有猜之前提取一次时间,然后再在猜完之后提取一次时间然后,两次的时间差为猜单词所需要的时间。

一定要先定义doublestart_time,end_time;

然后才可以应用的,while

(1)

{

guess=play=l=j=f=k=q=x=t=flag=0;

for(c=0;c<20;++c)

{

guessword[c]=WrongGuess[c]='\0';

}

c=1;

start_time=(double)clock()/CLOCKS_PER_SEC;//开始时间

ag2:

srand(time(NULL));

q=rand()%tot;

//printf("TheTrueLetteris%s\n",worldlist[q]);//查看程序随机选到的单词,调试时使用

先提取开始的时间

l=strlen(wordlist[q]);

printf("错误单词是%s\n",WrongGuess);

end_time=(double)clock()/CLOCKS_PER_SEC;

printf("Timeused=%.2lfs\n",end_time-start_time);

printf("是否再玩一次?

(y/n)\n");

scanf("%c",&play);

if(play!

='n')

continue;

else

exit(0);

然后再提取后来的时间

七、课程设计总结

21世纪是科技飞速发展的时代,而计算机技术的发展起到了决定性作用。

生活中的一切与计算机有着千丝万缕的联系。

也许是教室里老师必不可少的教学用具,也许是吃个饭都愿意揣着的通讯设备,也许是各式人看万千网络文件的智能神器。

21世纪时代发展是计算机技术发展的成果,一个美好的时代是计算机技术给我们最好的礼物。

所以组员们虽然不是计算机专业的学生,但是都必须进行这一次关于计算机程序设计的实习,这是学校为我们敞开的一次领悟计算机魅力的旅行。

在整个实习中,组员间相互分配任务,展开寻找实现各项功能程序代码的工作。

我们重新翻开c++课本,回忆,探索,思考,为了找到满意的代码而苦恼。

运行,更改,运行,更改,再运行,再更改,不希望看到error的心情到达极致,没有捷径来实现计算机程序苛刻的要求。

或许这是计算机给我们的警戒,我们享有的一切便利,背后都是所有密集的思考和创新。

其实在实践过程中,“原来如此啊”也许是最常印刻在心里的心情,原来如此啊,我们手上的高科技产品是这样的,原来如此啊,这些乱七八糟的代码都有他们存在的意义,原来如此啊,一整个程序也可能就败在一个小小的字符上。

总而言之,在完成这份报告时,以想努力克服的心态面对所有的不足,也希望两周的实践不会是学习计算机最后的步伐,希望会更好的学习计算机。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2