利用C++编写一个猜字游戏[组图]
今天,我们要用C++来写一个猜字母的游戏。不要担心,做起来并不是那么难的。首先,我们必须了解一下游戏规则。
一:玩家每次只能猜一个字母;
二:玩家只能猜错有限次,否则游戏失败;
三:猜错的字母将被记录下来;
更多内容请看C/C++技术专题 网络游戏攻略 游戏开发专题,或
三:程序分析
程序的运行结果大家都看到了,符合该游戏的规则,随机性也较强,这就是C++的强大。
我们判定字母是否已经被猜过,是这样做的:
if(badguess.find(guess)!=string::npos
player.find(guess)!=string::npos)
{
cout<<"对不起,这个字母您已经猜过了。";
continue;
}//判定是否已经猜过
因为假如字母被猜过,那么它要么在玩家猜出的残缺单词中,要么处于错误字母集合中,我们用find函数在这两处分别进行了搜索。
对于猜错后的处理,我们又是这样做的:
int temp=first.find(guess);
if(temp==string::npos)
{
cout<<"啊!猜错了。
";
guesses--;
badguess+=guess;
}//猜错后的处理
首先,我们查找这个字符是否在单词中出现。假如没有出现,find函数将返回string::npos。npos是一个常量,比string能存储的最大元素数多1。假如没有出现,我们先是将猜错的机会减去一次,再用了这个代码:badguess+=guess;将错误的字母加入badguess对象中。想想,这要用常规字符数组有多难?
最后,假如temp不是string::npos,那么我们就说玩家猜对了。但可能这个单词中有多个这样的字母,所以,我们这样做了:
temp=first.find(guess,temp+1);
while(temp!=string::npos)//继续搜索该字符,看是否单词中有多个该字符
{
player[temp]=guess;
temp=first.find(guess,temp+1);
}
这样一来,逐步缩小区间,直到确认单词中再无这个字符为止。大家从运行结果中也可以看到这一点:
您当前猜出的单词:----------a-
您当前猜错的字母集合:
请您猜吧!s
您还剩下10次猜错的机会。
您当前猜出的单词:-----ss---a-//将两个“s”都显示出来了
您当前猜错的字母集合:
大家若有爱好,可以对这个程序进行扩充,比如加入难度选择、最后给出对玩家的评价等。最后,希望大家能通过这个范例,更加热爱C++! 更多内容请看C/C++技术专题 网络游戏攻略 游戏开发专题,或