c++猜单词课程设计猜单词游戏Word下载.docx

上传人:b****6 文档编号:19835226 上传时间:2023-01-10 格式:DOCX 页数:44 大小:2.19MB
下载 相关 举报
c++猜单词课程设计猜单词游戏Word下载.docx_第1页
第1页 / 共44页
c++猜单词课程设计猜单词游戏Word下载.docx_第2页
第2页 / 共44页
c++猜单词课程设计猜单词游戏Word下载.docx_第3页
第3页 / 共44页
c++猜单词课程设计猜单词游戏Word下载.docx_第4页
第4页 / 共44页
c++猜单词课程设计猜单词游戏Word下载.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

c++猜单词课程设计猜单词游戏Word下载.docx

《c++猜单词课程设计猜单词游戏Word下载.docx》由会员分享,可在线阅读,更多相关《c++猜单词课程设计猜单词游戏Word下载.docx(44页珍藏版)》请在冰豆网上搜索。

c++猜单词课程设计猜单词游戏Word下载.docx

intJudge();

//判断是否猜中,猜中返回0,猜不中返回1或-(death)

intShowDisplay();

//显示单词及上吊人形,程序结束返回1

intOpenWordFile();

//打开单词库,随机取出一个单词赋给Word,成功返回1

intSaveWordFile();

//向单词库输入新单词,正确返回1

(2)程序主体结构的设置

该设置基本上全部修改了原程序的结构,在main函数中分别定义人人对抗和人机对抗的对象。

在键入对应的菜单选项后,进入操作函数,操作函数的参数即是对应对象的引用。

同样,若有下级菜单的函数一样用该对象的引用参数,这样,可保证对象的唯一性。

主菜单:

1.人人对抗(以人人对抗对象的引用作为参数调用子程序)

2.人机对抗(以人机对抗对象的引用作为参数调用子程序)

人人对抗菜单

1.开始猜单词

2.设置系统(即设置显示字符的概率和允许猜错的次数)

3.退出

人机对抗

1.开始猜单词

2.设置系统(即设置显示字符的概率和允许猜错的次数)

3.向单词库中添加单词

4.退出

(3)人人对抗时输入欲猜单词的隐藏

一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。

本程序在基础上还要有些限制条件,就是接收的字符必须是字母,当字幕为大写时还要转化为小写。

如果输入的不是字母要提示重新输入。

(4)C++用于处理字符串变量的新的数据类型——字符串类型(string类型)

在原程序字符串的操作中用了一种新的数据类型——String,该类型是一个字符串类,可以定义对象。

它在使用方法上和char,int类型一样,可以用来定义字符串变量,即用一个名字代表一个字符序列。

程序设计的特点

(1)增设了单词库,并且输入50个单词,以便使用。

(2)人人对抗和人机对抗时显示是否有重复字母

2.课程设计的详细设计:

程序主体结构图如下:

程序详细结构:

1.主菜单程序:

voidCGuess:

:

GetChoice(){

cout<

<

endl<

endl;

cout<

"

猜单词游戏"

<

endl<

endl;

"

制刘健莹"

cout<

***********************************************************"

按1人人对抗模式"

按2人机对抗模式"

按3退出"

请您选择:

;

cin>

>

Choice;

//得到用户选择

while(!

cin||Choice<

1||Choice>

3)//简查是否无效

{

无效输入"

endl

<

请再输入:

Flush(cin);

cin>

}//完成简查,得到有效输入,m_Choice变量的值被修改,清屏

system("

cls"

);

}

2.子菜单程序:

intCGuess:

InitialSet()

intexit=0;

if(Choice==1)

cout<

人人对抗"

按1开始玩游戏"

按2修改设置值"

按3退出"

*************************************************************"

你的选择:

Choice2;

}

else

人机对抗"

按3向单词库输入单词"

按4退出"

while(!

cin||Choice2<

1||Choice2>

4)

if(Choice2==1)cout<

GuessNum<

if(Choice2==2){

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

GuessNum;

//输入猜词次数

cin||GuessNum<

4||GuessNum>

10)

endl

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

cin>

Proba<

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

Proba;

//输入显示字母百分数

cin||Proba<

10||Proba>

80)

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

if(Choice2==3)

if(Choice==1)

{

exit=1;

}

else

SaveWordFile();

InitialSet();

if(Choice2==4)

exit=1;

returnexit;

}3.修改默认设置程序:

4.默认的游戏设置程序:

Proba=20;

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

GuessNum=4;

//玩家猜词的机会

5.将单词输入进单词库中的函数:

voidGuessGame:

saveWordFile()

intn=50,i,j;

ofstreamout;

out.open("

words.txt"

if(!

out)

不能打开单词库"

单词库中有50个单词"

向单词库中输入多少个单词"

j;

请向单词库中输入"

j<

个单词"

for(i=0;

i<

j;

i++)

{stringword;

//输入单词

getline(cin,word);

n=n+1;

out<

word;

单词库中有"

n<

out.close();

6.显示猜对的单词:

test(stringword,charletter,int&

numwrong,string&

temp)

staticintm;

intcheck2=0;

//判断输入的字符是否为组成单词的字符,正确为1

if(letter==word.at(m))//若单词中有这一个字符

temp.replace(m,1,1,letter);

check2=1;

if(check2==0)//若单词中没有这一个字符

Wrongletter"

system("

pause"

numwrong++;

if(m<

(word.length()-1)){m++;

elsem=0;

7.输出给定几率的字母:

for(i=word.length()*Proba;

word.length();

temp.replace(i,1,1,'

*'

8.游戏程序主体运行:

Run(){

intexit=0;

//主循环是否退出的变量,1时退出

do{//主循环

//执行系统命令清屏

GetChoice();

//给出说明并得到选择

switch(Choice)

case1:

Game();

//与人对战

break;

case2:

//与电脑对战

case3:

cout<

再见"

endl<

//退出

exit=1;

default:

无效输入-请再输入"

//无效输入

}while(exit!

=1);

//退出主循环

//执行系统命令:

暂停

return0;

}9.在人人对抗时,一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。

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

password()

{

charstr[20];

charch;

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

stringword,Word,worD;

请第二位玩家输入单词:

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++)

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

Word=word;

word=worD;

intwordcheck;

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

wordcheck=0;

for(inti=0;

Word.length();

i++)

if(!

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

word.at();

{

wordcheck=1;

}

if(wordcheck==1){

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

password();

Word=word;

}while(wordcheck==1);

w=ch;

UserWord()

人人对战"

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

猜词机会:

显示字母:

%'

password();

Length=Word.length();

return1;

10.主体的类的定义

classCGuess{

private:

stringWord,word,worD;

//要猜的单词

stringDisplayWord;

//用户所见的单词

char*pWord1;

char*pWord2;

intProba;

intGuessNum;

intWrongNum;

//玩家猜错的次数

intChosenCounter;

//玩家猜过的字母个数

stringLetterChosen;

//玩家已经猜过的字母

intChoice;

//玩家的选择

intShowNum;

//显示字母个数

intLength;

//所猜单词的长度

intLetterNum;

//单词中的字母个数

inti;

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

intCheck;

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

intChoice2;

intw;

public:

CGuess();

intInitialSet();

intSaveWordFile();

intUserWord();

//玩家出词

intRndWord();

//电脑出词

voidReplaceWord();

voidisChosen(char);

voidJudge(char);

intRun();

//运行

voidGetChoice();

//得到选择

voidGame();

//游戏主要函数

voidSet();

//设置

voidpassword();

};

3.调试程序的过程:

1.主函数若出现在前面,应将其他函数先定义,或将主函数后置。

2.在程序开头须将所用函数的文件包含,否则函数不得使用。

3.人人对抗时,输入单词未显示*,应先设置显示部分,然后输入单词。

4.当使用getch()时,应先加头文件conic.h,否则无法使用。

5.人机对抗程序会出现不出现单词,直接显示猜词正确,随机函数rand()应除50求余。

6.保密部分无法识别大小写,用ASCII码将大写字母转化为小写字母。

7.人人对抗过程中输入单词,输出*,但是无论退格还是回车都输出*,在保密函数中没有设置输入回车或空格就跳出函数的部分。

8.运用保密函数时出现输出无效输入。

9.人人对抗中输入单词后显示*,但是单词没有返回原程序,造成没有猜单词的过程,只有最后结果“恭喜你,猜对了!

10.人机对抗无法找到words..txt文件,需要先将words文档转化为文件格式,才能应用。

4.输入输出数据:

以人人对抗模式输入love为例:

1.运行程序,出现主菜单,输入1

2,.出现人人对抗模式菜单栏,输入2

3.修改默认设置

4.第二个玩家输入单词love

5.出现猜单词程序

6.输出上吊人形

7.出现正确答案

附:

猜单词过程:

正确输入

错误输入

向单词库中输入单词:

5.课程设计总结:

通过这次课程设计,我懂得了如何将所学的知识运用起来,与实际相结合,也让我能够在以后的学习中能够想有所学,学有所用,多多联系实际,用知识帮助他人。

课程设计中,我掌握了类的定义和调用,数组的运用,菜单栏的设置等等,同时,程序设计过程中,懂得了如何将不会的知识学会,如何将会的知识灵活熟练地应用,也懂得了以后的学习也要勤动脑思考,把知识转化为自己的,提高了自己的创新能力,动手能力,思考能力,为我今后的学习打下良好的基础。

6.程序源代码附录

#include<

iostream>

//标准输入输出[cin;

cout]

string>

//字符串处理[string.length();

at();

]

cctype>

//字符处理和检测

fstream>

//文件流

cstdlib>

//使用随机函数用

time.h>

//得到更好的随机数用

conio.h>

//draw类定义

#ifndefDRAW_H//检测是否已经包含

#defineDRAW_H

classdraw

draw();

//构造函数

//成员函数

voidrope();

//绳子

voidhead();

//头

voidneck();

//颈

voidleftarm();

//左臂

voidrightarm();

//右臂

voidwaisttop();

//腰

voidleftleg();

//左腿

voidrightleg()

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

当前位置:首页 > 工作范文 > 制度规范

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

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