这是一个历史悠久的小游戏,早在维多利亚时代就已流行起来,规则简单且有趣,在7步之内猜出单词,否则小人将会“上吊”。

Hangman直译为“上吊的人”,是一个猜单词的双人游戏。由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母 [1]  。第一个人抽走单词或短语,只留下相应数量的空白与下划线。

通过这个例子可以学习string.find() 的用法.

代码如下:

hangman.cpp

// Example16.3hangman.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <cctype>
using std::string;
const int NUM = 26;
const string wordlist[NUM] = { "apiary","beetle", "cereal",
"danger", "ensign", "florid", "garage", "health", "insult",
"jackal", "keeper", "loaner", "manage", "nonce","onset",
"plaid", "quilt", "remote", "stolid", "train", "useful",
"valid", "whence", "xenon", "yearn", "zippy" };
int main()
{//std::cout << "Hello World!\n";using std::cout;using std::cin;using std::tolower;using std::endl;std::srand(std::time(0));char play;cout << "Will you play a word game? <y/n>";cin >> play;play = tolower(play);while (play == 'y'){string target = wordlist[std::rand()%NUM];int length = target.length();string attempt(length,'-');string badchars;int guesses = 6;cout << "Guess my secret word. It has " << length << " letters, and  you guess \n"<<"one letter at a time.You get "<<guesses<<"wrong guesses.\n";cout << "Your word: " << attempt << endl;while (guesses>0&&attempt!=target){char letter;cout << "Guess a letter: ";cin >> letter;if (badchars.find(letter) != string::npos || attempt.find(letter) != string::npos){cout << "You already guessed that. Try again. \n";continue;}int loc = target.find(letter);if (loc == string::npos){cout << "Oh,bad guess !\n";--guesses;badchars += letter;//add to string }else{cout << "Good guess!\n";attempt[loc] = letter;//check if letter appears again.loc = target.find(letter,loc+1);while (loc!=string::npos){attempt[loc] = letter;loc = target.find(letter,loc+1);}}cout << "Your word:" << attempt << endl;if (attempt != target){if (badchars.length() > 0) { cout << "Bad choices: " << badchars << endl; }cout << guesses << " bad guess left \n";}}//***以上是while 循环语句块***以上是while 循环语句块***以上是while 循环语句块***if (guesses > 0)cout << "That is right!\n";elsecout << "Sorry,the word is " << target << ".\n";cout << "Will you play another ? <y/n>";cin >> play;play = tolower(play);}cout << "Bye \n";return 0;
}

C++PrimerPlus(第6版)中文版:Chapter16.1string类_16.3hangman.cpp相关推荐

  1. C++PrimerPlus(第6版)中文版:Chapter16.4.6关联容器_setops.cpp

    本小节主要讲set的使用方法. 关联容器将值和键关联在一起,并使用键来查找值. 关联容器的优点在于:它提供了对元素的快速访问.插入元素的时候,不需要指定插入位置,因为关联容器是排过序的,它知道新元素来 ...

  2. C++PrimerPlus(第6版)中文版:Chapter8.2.4_Example8.6strc_ref.cpp

    引用非常适合于结构和类,下面的例子就演示了这一点. // Chapter8.2.4_Example8.6strc_ref.cpp.cpp : 此文件包含 "main" 函数.程序执 ...

  3. WCF服务编程(4):《WCF服务编程》第3版中文版翻译结束,即将出版

    原文地址: <WCF服务编程>第4版本翻译完毕!2016年底应该出版 [置顶]↑ WCF服务编程(4):<WCF服务编程>第3版中文版翻译结束,即将出版 ↑ 作为世界范围内最经 ...

  4. python cookbook pdf下载-Python Cookbook 第3版 中文版.pdf

    作 者 :(美)比斯利,(美)琼斯著 出版发行 : 北京:人民邮电出版社 , 2015.05 ISBN号 :978-7-115-37959-7 页 数 : 684 原书定价 : 108.00 开本 : ...

  5. C++Primer Plus第6版C Primer Plus第6版 中文版免费分享啦

    最近在学习C++,用的资料是师兄分享的经典书籍<C++Primer Plus第6版中文版>的PDF,自带书签,使用很方便.但师兄说这个是他在网上花了积分才下载下来的,这让我很是吃惊,因为作 ...

  6. python学习手册-Python学习手册(第4版) 中文版.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython Python学习手册(第4版) 中文版.pdf11 ...

  7. C Primer Plus(第5版)中文版

    1. 在声明一个简单变量和数组时使用关键字const很简单.指针则要复杂一些,因为不得不把让指针本身成为const与让指针指向的值成为const区分开来.下面的声明表明pf指向的值必须是不变的: 但p ...

  8. UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...

    UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...

  9. C Primer Plus第六版(中文版)编程练习答案(完美修订版)汇总

    //本文是博主编写的C Primer Plus第六版(中文版)编程练习答案的所有链接; //使用超链接汇总于此,若是有用请点赞收藏并分享给他人; C Primer Plus 第六版(中文版)第二章(完 ...

最新文章

  1. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...
  2. 天昊生物16S扩增子绝对定量测序项目文章再次登陆《Science of the Total Environment》...
  3. nginx配置访问密码,让用户输入用户名密码才能访问
  4. dao接口有什么好处_Java后端精选技术:我们为什么要使用AOP?
  5. Office Communication Server(OCS) 2007存档和CDR的部署
  6. qtimer不触发原因_迷你世界:触发器玩法多,教你摆表情就能拥有满格血量
  7. 在windows上使用go编译dll文件,供C++调用
  8. LeetCode 174. 地下城游戏(DP)
  9. Qt:Qt实现飞秋拦截助手—ARP攻击
  10. ICCV2021 MIT-IBM沃森开源CrossViT:Transformer走向多分支、多尺度
  11. fusion按照多个centos,设置静态ip
  12. 模拟机安装linux教程,Windows 10利用虚拟机安装Linux图文教程
  13. 数十亿个 Wi-Fi 设备存在缺陷,通信易被窃听!
  14. Prometheus 的云上 MySQL 监控实践
  15. 大厂程序员手把手教你如何写简历(附简历模板)
  16. android 登录 service_如何优雅的实现自己的Android组件化改造?
  17. 国科大学习资料--高级软件工程-复习题设计题答案
  18. java 6面骰子_掷6面骰子6000次每个点数出现的概率
  19. 中轴型SpA的两种诊断分支具有可比性
  20. MATLAB(2)--MATLAB矩阵的表示

热门文章

  1. 今天,学会这几个Vue高级实战技巧就够了!
  2. Chrome黑暗模式
  3. excel表格下载,并设置填充色
  4. css用层级挡不住绝对定位
  5. 企业微信4.1.6 版本新功能介绍
  6. 神经网络整体架构及细节(详细简单)
  7. 【XBXX】Python中的pow函数的使用(水仙花树案例)
  8. 苹果M1处理器运行互联网应用更快,对Intel是又一大打击
  9. 云服务也要差异化————企商在线云计算事业部CTO陈鹏谈IDC与云服务的平衡艺术...
  10. mac上APP应用卡住了怎么办