这是一个历史悠久的小游戏,早在维多利亚时代就已流行起来,规则简单且有趣,在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. vc picture控件载入背景图,随控件大小改变
  2. latex中的引用命令\citep{}和\citet{}
  3. 编程入门python语言是多大孩子学的-包头孩子学编程python好吗
  4. java的默认_java默认包的使用
  5. linux cut 命令(转)
  6. linux ntfs 用户权限,Linux在NTFS中创建的文件的权限
  7. Java并发教程–线程安全设计
  8. 359B. Permutation
  9. 什么是脏数据?怎样用箱形图分析异常值?终于有人讲明白了
  10. Spring核心技术原理-(2)-通过Web开发演进过程了解一下为什么要有Spring AOP?
  11. 在NT系列操作系统里让自己“消失”
  12. 2018蚂蚁金服NLP用户意图的精准识别,复赛f1 = 0.7327
  13. php实现抽象工厂模式(转)
  14. Android 常用的adb命令
  15. php有的图片显示不出来,图片显示不出来,但是数据库里有显示
  16. Fortran95学习总结
  17. 学习嵌入式的书籍推荐,嵌入式编程入门教程学习大纲
  18. Telegram被封禁的原因
  19. OSAL多任务资源分配机制
  20. Python写入数据到txt文本中

热门文章

  1. dedecms织梦标签解析不完整,不完全解析显示的原因
  2. 微众信科:KYB+KYC+KYD,企业征信需要“组合拳”
  3. 东方青苍的头饰有多贵?目测人均可入手....
  4. 海外媒体发稿技巧和方法,海外媒体发稿怎么做?
  5. 发布海外新闻要如何选择媒体网站?
  6. Spring系列学习之Spring Cloud Data Flow 微服务数据流
  7. 按键精灵-3-按键精灵键盘鼠标命令
  8. [zz]嵌入式Linux系统图形及图形用户界面综述
  9. HTML网页排版划分练习
  10. Egret解疑释惑之程序入口