增加了可以在构造Hangman对象时通过传入参数设定“最大猜测次数”的功能。少量修改。# 2015年12月15日 00:20:22

https://github.com/shalliestera/hangman

// 猜单词游戏
#ifndef HANGMAN_H_
#define HANGMAN_H_
#include <string>
class Hangman {
public:
// 可以在创建时确定最大猜错次数
explicit Hangman(int chances = 6); // ctors
// Guess()是主要操作
void Guess();
private:
// 内置单词表[a-z] # word list, from a to z
static const int NUM = 26;
const char* 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"
};
// ---
std::string m_word; // 保存随机选中的单词 # store the randomly choosing word
std::string m_show; // 保存猜对的的字母,同时是提示 # correctly guessing
std::string m_wrong; // 保存猜错的字母 # wrong guessing
int m_chances; // 最多可以猜错的次数 # max chances
int m_usrChances; // 构造时传入的次数 #
// ---
// private methods # 不公开的内部方法
void init(int chances = 6); // 初始化
void Check(char ch); // 检查字母对不对
void YouWin();
void GameOver();
const std::string& RightWord() const {return m_word;}
const std::string& YouGuess() const {return m_show;}
void Tips() const;
};
#endif // HANGMAN_H_

单词部分借用了过去写的,重新写了一个命令行下的Hangman。

https://github.com/shalliestera/hangman

// 猜单词游戏
#ifndef HANGMAN_H_
#define HANGMAN_H_
#include <string>
class Hangman {
private:
static const int NUM = 26;
const char* 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"
};
std::string m_word; // 保存随机选中的单词
std::string m_show; // 保存猜对的的字母,同时是提示
std::string m_wrong; // 保存猜错的字母
int m_chances;
// private methods # 不公开的内部方法
void init(int chances = 6); // 初始化
void Check(char ch); // 检查字母对不对
void YouWin();
void GameOver();
const std::string& RightWord() const {return m_word;}
const std::string& YouGuess() const {return m_show;}
public:
explicit Hangman(int chances = 6); // ctors
// 猜中则返回true, 猜错返回false
void Guess();
void Tips() const;
};
#endif // HANGMAN_H_

【C++】命令行Hangman #2015年12月15日 00:20:27的更多相关文章

  1. 2015年12月28日 Java基础系列(六)流

    2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流

  2. 2015年12月13日 spring初级知识讲解(四)面向切面的Spring

    2015年12月13日 具体内容待补充...

  3. 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)

    作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...

  4. 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)

    作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...

  5. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  6. Network Real Trace Analysis 2015年12月10日

    了解网络中真实的流量,国内很难找到巨人的肩膀. WAND是新西兰waikato 大学计算机系的研究小组,主要做网络测量,大规模网络流量捕获,网络分析.还做专业的分析软件. libtrace是其开源的分 ...

  7. AHKManager.ahk AHK管理器 2019年12月15日

    AHKManager.ahk  AHK管理器  2019年12月15日 快捷键   {Alt} + {F1} ///////////////////////////////////////////// ...

  8. 2016年12月15日 星期四 --出埃及记 Exodus 21:10

    2016年12月15日 星期四 --出埃及记 Exodus 21:10 If he marries another woman, he must not deprive the first one o ...

  9. 北京Uber优步司机奖励政策(12月15日)

    用户组:人民优步及电动车(适用于12月15日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...

随机推荐

  1. About 'atoi'

    在很多地方我们看到的都是:atoi 是一个 C Reference function atoi() convert a string to an integer. This function of s ...

  2. C++对象模型与内存位对齐的简单分析(GNU GCC&VS2015编译器)

    以Fruit和Apple为例进行分析: Fruit和Apple的定义如下: 通过在两种编译环境下的测试(GNU GCC & VS2015),可以发现这两种编译器的对象模型是一样的,如下图所示: ...

  3. 模板:LCS(最长公共子序列)

    #include <cstring> #define max(a,b) ((a) > (b) ? (a) : (b)) int same(char ch1,char ch2) { ; ...

  4. 蝇量模式(Flyweight Pattern)

    蝇量模式:让某个类的一个实例能用来提供许多“虚拟实例”. 在有大量对象时,有可能造成内存溢出,把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重复创建.(JAVA中的S ...

  5. 队列(顺序存储)C++模板实现

    队列:一端进行插入,另一端进行删除的线性结构,具有先进先出性.利用数组来实现队列将面临"假溢出"的情况,如下图所示: front:永远指向队首元素,队首在本文中是允许删除元素的一端 ...

  6. C# Linq简介

    LInq是Language Integrated Query的简称,它是微软在.net framework 3.5里面新加入的特性,用以简化查询查询操作.它主要包含了3块,Linq to Object ...

  7. WCF学习笔记(基于REST规则方式)

    一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...

  8. PHP之session_start()详解

    1.session的工作原理 (1)首先使用session_start()函数进行初始换 (2)当执行PHP脚本时,通过使用$_SESSION超全局变量注册session变量. (3)当PHP脚本执行 ...

  9. 设置nginx禁止通过IP访问服务器的方法

    在Nginx上设置禁止通过IP访问服务器,只允许通过域名访问,以避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网. nginx的默认虚拟主机允许用户通过IP访问,或者通过未设置的域名访问 ...

  10. ASP.NET MVC got 405 error on HTTP DELETE request

    使用Backload的时候在本地调试通过,上传服务器后出现405错误(监控通信时可以发现ajax的返回结果为405) 通过修改webconfig可以解决: <system.webServer&g ...