柏柯猜单词游戏课程设计报告Word文档下载推荐.docx

上传人:b****3 文档编号:16800964 上传时间:2022-11-26 格式:DOCX 页数:13 大小:51.88KB
下载 相关 举报
柏柯猜单词游戏课程设计报告Word文档下载推荐.docx_第1页
第1页 / 共13页
柏柯猜单词游戏课程设计报告Word文档下载推荐.docx_第2页
第2页 / 共13页
柏柯猜单词游戏课程设计报告Word文档下载推荐.docx_第3页
第3页 / 共13页
柏柯猜单词游戏课程设计报告Word文档下载推荐.docx_第4页
第4页 / 共13页
柏柯猜单词游戏课程设计报告Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

柏柯猜单词游戏课程设计报告Word文档下载推荐.docx

《柏柯猜单词游戏课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《柏柯猜单词游戏课程设计报告Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

柏柯猜单词游戏课程设计报告Word文档下载推荐.docx

voidleftarm();

//左臂

voidrightarm();

//右臂

voidwaisttop();

//腰

voidleftleg();

//左腿

voidrightleg();

//右腿

};

#endif

#ifndefGUESS_H

#defineGUESS_H

usingnamespacestd;

//程序类定义

classCGuess{

private:

stringm_Word,m_word,m_worD;

//要猜的单词

stringm_DisplayWord;

//用户所见的单词

char*m_pWord1;

char*m_pWord2;

intm_Proba;

//显示单词字母个数百分比

intm_GuessNum;

//玩家猜词的机会

intm_WrongNum;

//玩家猜错的次数

intm_ChosenCounter;

//玩家猜过的字母个数

stringm_LetterChosen;

//玩家已经猜过的字母

intm_Choice;

//玩家的选择

intm_ShowNum;

//显示字母个数

intm_Length;

//所猜单词的长度

intm_LetterNum;

//单词中的字母个数

intm_i;

//循环的记数变量,使每次游戏都不一样

intm_Check;

//用户输入字母是否正确

intm_Choice2;

CGuess();

voidInitialSet();

intSaveWordFile();

intUserWord();

//玩家出词

intRndWord();

//电脑出词

voidReplaceWord();

voidisChosen(char);

voidJudge(char);

intRun();

//运行

voidGetChoice();

//得到选择

voidGame();

//游戏主要函数

voidSet();

//设置

voidpassword();

#endif

2.根据所猜单词中的字母个数,给出指定几率的提示字母,显示于单词中的正确位置。

实现该功能的函数定义如下:

voidCGuess:

:

Set()

cout<

<

"

默认的猜单词次数改为:

;

cin>

>

m_GuessNum;

while(!

cin||m_GuessNum<

4||m_GuessNum>

10)

{

cout<

"

无效输入"

<

endl

<

请再输入:

Flush(cin);

cin>

}

默认的显示字母百分数改为:

m_Proba;

cin||m_Proba<

10||m_Proba>

80)

system("

cls"

);

}

3.在进入猜单词的过程后,首先显示单词询问是开始猜单词还是修改设置,默认的修改次数为4,默认显示字符的几率为20%,若要修改这个设置,在显示菜单中选择设置选项进行修改。

InitialSet()

if(m_Choice==1){

人人对抗"

endl;

}else{

人机对抗"

cout<

---------------------------------------"

endl<

endl;

1.使用默认的值"

endl<

2.选择猜词机会"

你的选择:

m_Choice2;

cin||m_Choice2<

1||m_Choice2>

2)

if(m_Choice2==1)cout<

m_GuessNum<

if(m_Choice2==2){

你要几次猜词机会(4-10):

//输入猜词次数

while(!

10)

cout<

endl

请再输入-你要几次猜词机会(4-10):

cin>

2.选择显示字母的百分数"

m_Proba<

你要百分之几的字母显示出来(10-80):

//输入显示字母百分数

80)

请再输入-你要百分之几的字母显示出来(10-80):

4.在人人对抗时,一个玩家给出单词时,单词不显示在屏幕上。

字符用“*”显示。

参照教材21点的程序,结合猜单词题目的要求,实现该功能的函数定义如下:

#defineN13//为任意一个字符(包括空白字符)的ASC||码值

password()

{

charstr[20];

charch;

inti=0,a=0,j=0;

请第二位玩家输入单词:

cout.flush();

//请输出缓冲区

ch=getch();

while(ch!

=13)

str[i]=ch;

if(str[i]>

=97&

&

str[i]<

=122)

'

*'

j++;

cout.flush();

ch=getch();

elseif(str[i]>

=65&

=90)

str[i]=str[i]+32;

elseif(str[i]<

=65||(str[i]>

=90&

=97)||str[i]>

=112)

*"

i++;

}a=j;

for(i=0;

i<

a;

i++)

{

m_word.replace(i,1,1,str[i]);

}

m_Word=m_word;

m_word=m_worD;

intwordcheck;

do{//检查用户输入单词是否有误

wordcheck=0;

for(inti=0;

i<

m_Word.length();

i++)

if(!

isalpha(m_Word.at(i)))//isalpha();

word.at();

{

wordcheck=1;

}

if(wordcheck==1){

无效-请第二位玩家重新输入:

password();

m_Word=m_word;

}while(wordcheck==1);

5.猜单词时,输入一个单词,判断函数改为判断输入判断的字符是否于所猜单词一一对应,将猜中的字符显示出来。

ReplaceWord(){

m_pWord1=newchar[m_Length];

strcpy(m_pWord1,m_Word.data());

m_pWord2=newchar[m_Length];

strcpy(m_pWord2,m_Word.data());

char*letterlist=newchar[m_Length];

//记录单词中的不重复字母

strcpy(letterlist,m_pWord1);

//循环得到一个记录单词所含字母的字符串letterlist

for(inti=0;

m_Length;

i++){//记录不重复字母数

for(intj=i+1;

j<

j++){

if(m_pWord2[i]==m_pWord2[j]&

m_pWord2[i]!

='

){

m_pWord2[j]='

//重复则换成星号

if(m_pWord2[i]!

letterlist[m_LetterNum]=m_pWord2[i];

m_LetterNum++;

intm_ShowNum=int(m_LetterNum*m_Proba/100.0);

//要显示的字母数,保证其大于2

if(m_LetterNum==2)m_ShowNum=1;

if(m_LetterNum>

2&

m_ShowNum<

2)m_ShowNum=2;

int*radomarray=newint[m_ShowNum];

//得到一指定长度的随机数组

intx;

srand(time(NULL));

for(i=0;

m_ShowNum;

i++){//是否有重复

x=rand()%m_ShowNum;

//不大于m_ShowNum的随机数

radomarray[i]=x;

for(intj=0;

i;

if(radomarray[i]==radomarray[j]&

i!

=j)i--;

//重复则再来一次

 

intre=1;

//替换指定字母的循环

i++){

if(char(m_pWord1[i])==char(letterlist[radomarray[j]])){re=0;

if(re){

m_pWord1[i]='

re=1;

m_DisplayWord=m_pWord1;

delete[]radomarray;

6.在人机对抗时,可以随机读取单词,也可以选择向单词库输入单词,同时,将库中的单词的个数显示出来,并根据单词库中单词个数的多少决定随机选取的范围。

三.程序的使用说明

**我们一起来猜单词吧!

HANGMAN游戏!

**

让在一开始的界面开始,会出现如下的界面:

制作者:

柏柯

指导教师:

***************************************

1人人对抗

2人机对抗

3添加单词

4设置游戏

5退出游戏

按1进入人人对抗

开始出现初始设置界面

1使用默认的值

2选择猜词机会

选择后继续进入设置界面

2选择显示字母的百分数

设置完成后出现:

请玩家二输入单词(输入的单词以星号显示)

输入完成后由玩家一进行游戏,之后退到主界面

按2进入人机对抗

进入设置界面(同1过程)

可以选择默认的值或更改猜词机会和显示字母百分数

进行游戏(注释:

电脑从word.txt中随机抽选词语并根据进行的设置进行游戏)

按3向单词库添加单词

添加任何单词,可多次添加。

可显示单词个数。

按4进行游戏设置

可以修改系统默认的猜词机会和显示字母百分数

按5退出游戏

其结构图如图所示

五、退出游戏

四.程序设计中遇到的问题和解决方法

1、人人对抗中,要求实现第二位玩家输入单词后,屏幕不显示该单词而显示星号“*”。

参照教材中二十一点程序的做法,实现了该功能。

2、由于程序要充分体现C++面向对象的特点,游戏界面要保证友好,方便与玩家的交流,实现玩家对游戏的设置。

因此每个操作之前,都有相应的设置提示,玩家可根据需要选择默认值或者修改设置。

而每步操作之后,也都有相应的提示,如果玩家输入错误,形同会判断并且给与相应的错误提示,方便与玩家交流,提高程序的可操作性。

3、人机大战时,玩家可以选择向单词库中输入单词。

输入前后都会有相应的词库单词数目提示。

五.制作调试心得及体会

在此之前,我只学了一个学期的C++程序设计,对这门计算机语言的掌握还不够熟练,要独立完成课程呢个设计还是很有难度的。

但这个题目是游戏类型的,比较贴近生活,以前我也很喜欢吊小人的猜单词游戏,因此特别想运用所学的知识,用程序去实现它。

我按照题目要求,运用所学知识,借助教材的提示和部分程序,完成了对数据函数的封装,编写程序,调试程序。

第一次做,不免有很多不尽人意的地方。

比如说,游戏界面显得比较单调,不够友好。

每次才做完成之后还不能选择回到上级菜单,而是直接回到主菜单,还不能满足玩家随心所欲的要求。

有时候程序会莫名其妙地中断,在调试过程中也出现了不能向单词库中随机读去单词的情况。

但这毕竟是第一次,能基本完成程序的要求我还是很欣慰的。

我会将所学的C++知识尽可能多的运用。

做出更好的程序。

在此要感谢老师这么长时间来对我们的悉心指导和耐心帮助,也希望老师多多批评指正。

0916120201柏柯

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

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1