猜单词游戏C++程序_第1页
猜单词游戏C++程序_第2页
猜单词游戏C++程序_第3页
猜单词游戏C++程序_第4页
猜单词游戏C++程序_第5页
全文预览已结束

下载本文档

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

文档简介

猜单词游戏C++程序以下是一个完整的猜单词游戏C++程序,包含随机抽取单词、猜测次数限制、实时反馈、大小写不敏感等功能,代码注释详细,可直接复制运行,适合初学者学习和使用。cpp

#include<iostream>

#include<vector>

#include<string>

#include<cstdlib>

#include<ctime>

#include<cctype>//用于字符大小写转换

usingnamespacestd;

//函数声明

//转换字符串为小写(统一输入,避免大小写影响判断)

stringtoLowercase(stringstr);

//初始化猜测结果(用下划线代替未猜中的字母)

stringinitGuess(intlength);

//检查玩家输入的字母是否在单词中,并更新猜测结果

boolcheckLetter(charletter,stringword,string&guess);

//显示当前猜测进度、剩余次数

voidshowStatus(stringguess,intremainingGuesses);

intmain(){

//1.初始化单词库(可自行添加、修改单词)

vector<string>wordList={

"apple","banana","orange","grape","watermelon",

"computer","program","coding","cpp","python",

"school","student","teacher","book","pen"

};

//2.设置随机种子(确保每次运行单词不同)

srand((unsignedint)time(0));

//3.随机抽取一个单词作为目标单词

intrandomIndex=rand()%wordList.size();

stringtargetWord=wordList[randomIndex];

//统一转换为小写,方便后续判断

targetWord=toLowercase(targetWord);

//4.游戏初始化

constintMAX_GUESSES=6;//最大猜测次数(可修改)

intremainingGuesses=MAX_GUESSES;

stringcurrentGuess=initGuess(targetWord.size());//初始猜测结果(全下划线)

boolgameOver=false;

boolisWin=false;

//5.游戏欢迎语

cout<<"====================猜单词游戏===================="<<endl;

cout<<"规则:猜测一个"<<targetWord.size()<<"个字母的单词,每次输入一个字母"<<endl;

cout<<"提示:大小写不敏感,共有"<<MAX_GUESSES<<"次猜测机会,加油!"<<endl;

cout<<"===================================================="<<endl<<endl;

//6.游戏主循环

while(!gameOver){

//显示当前猜测状态

showStatus(currentGuess,remainingGuesses);

//提示玩家输入字母

charinput;

cout<<"请输入你猜测的字母:";

cin>>input;

//转换输入为小写,统一判断标准

input=tolower(input);

//检查输入是否合法(仅允许单个字母)

if(!isalpha(input)){

cout<<"❌输入错误!请输入一个英文字母。"<<endl<<endl;

continue;

}

//检查字母是否已经猜过

if(currentGuess.find(input)!=string::npos){

cout<<"⚠️这个字母已经猜过啦,请换一个字母。"<<endl<<endl;

continue;

}

//检查字母是否在目标单词中

boolisCorrect=checkLetter(input,targetWord,currentGuess);

//根据猜测结果更新剩余次数

if(!isCorrect){

remainingGuesses--;

cout<<"❌猜错啦!剩余猜测次数:"<<remainingGuesses<<endl<<endl;

}else{

cout<<"✅猜对啦!继续加油~"<<endl<<endl;

}

//判断游戏是否结束

//1.猜对所有字母(获胜)

if(currentGuess==targetWord){

isWin=true;

gameOver=true;

break;

}

//2.猜测次数用完(失败)

if(remainingGuesses==0){

gameOver=true;

break;

}

}

//7.游戏结束,显示结果

cout<<"====================游戏结束===================="<<endl;

if(isWin){

cout<<"🎉恭喜你!猜对啦!目标单词是:"<<targetWord<<endl;

cout<<"你用了"<<MAX_GUESSES-remainingGuesses<<"次猜测机会~"<<endl;

}else{

cout<<"😢很遗憾,猜测次数用完啦!"<<endl;

cout<<"目标单词是:"<<targetWord<<endl;

cout<<"下次再加油哦!"<<endl;

}

cout<<"===================================================="<<endl;

return0;

}

//函数实现:转换字符串为小写

stringtoLowercase(stringstr){

for(inti=0;i<str.size();i++){

str[i]=tolower(str[i]);

}

returnstr;

}

//函数实现:初始化猜测结果(用下划线代替未猜中的字母,字母之间用空格分隔)

stringinitGuess(intlength){

stringguess;

for(inti=0;i<length;i++){

guess+='_';

if(i!=length-1){//最后一个字母后不添加空格

guess+='';

}

}

returnguess;

}

//函数实现:检查字母是否在单词中,并更新猜测结果

boolcheckLetter(charletter,stringword,string&guess){

boolisCorrect=false;

//遍历目标单词,找到所有匹配的字母,更新猜测结果

for(inti=0;i<word.size();i++){

if(word[i]==letter){

//猜测结果中,字母对应的位置(注意guess中字母间隔一个空格,所以索引是i*2)

guess[i*2]=letter;

isCorrect=true;

}

}

returnisCorrect;

}

//函数实现:显示当前猜测进度、剩余次数

voidshowStatus(stringguess,intremainingGuesses){

cout<<"当前猜测:"<<guess<<endl;

cout<<"剩余猜测次数:"<<remainingGuesses<<endl;

}

程序说明核心功能:随机抽取单词、大小写不敏感判断、输入合法性校验、实时进度反馈、获胜/失败判断。可修改部分:单词库(wordList向量中可添加任意英文单词)、最大猜测次数(MAX_GUESSES

温馨提示

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

评论

0/150

提交评论