代码

#include <bits/stdc++.h>
using namespace std;
int bk[110];
string sj(int t)
{
string ans="";
for(int i=0;i<t;i++)
ans=ans+char((rand()%26)+'a');
return ans;
}
main()
{
srand(time(0));
cout<<"hangman游戏总共有6次猜的机会,可以选择难度\n";
cout<<"easy--5个字母组成的单词\nnormal--8个字母组成的单词\nhard--12个字母组成的单词\nlunatic--26个字母组成的单词\n";
while(1)
{
int sum;
cout<<"你选择的难度为\n请输入easy,normal,hard或者lunatic\n";
f1:
string e;
cin>>e;
if(e=="easy")
sum=5;
else if(e=="normal")
sum=8;
else if(e=="hard")
sum=12;
else if(e=="lunatic")
sum=26;
else
{
cout<<"你输入了非法的选项请重新输入!!!\n";
goto f1;
}
string a=sj(sum);
int num=6;
memset(bk,0,sizeof(bk));
//cout<<a<<endl;
cout<<"请输入一个字母\n";
while(1)
{
f2:
string t;
cin>>t;
if(t.size()>1)
{
cout<<"输入了多个字母请重新输入\n";
goto f2;
}
int f,ff;
f=1;
ff=0;
for(int i=0;i<a.size();i++)
if(a[i]==t[0])
{
bk[i]++;
if(bk[i]==1)
f=0;
else
ff=1;
}
int ac=1;
for(int i=0;i<a.size();i++)
if(bk[i]==0)
{
ac=0;
break;
}
if(ac)
{
cout<<"--------------------------------------------\n\n";
cout<<"恭喜你完全猜出来了!!!你还剩余<<"<<num<<">>次机会\n";
cout<<"原单词是\n";
for(int i=0;i<a.size();i++)
{
if(bk[i]!=0)
cout<<a[i]<<" ";
else
cout<<"_ ";
}
cout<<endl;
cout<<"--------------------------------------------\n\n";
break;
}
if(f)
{
num--;
cout<<"--------------------------------------------\n";
if(f&&!ff)
cout<<"你猜的字母在原单词中没有出现!!!\n";
else if(ff)
cout<<"你猜了一个你已经猜过的正确的字母!!!\n";
if(!num)
{
cout<<"--------------------------------------------\n\n";
cout<<"你已经失败了!!!hangman已经完成了!!!\n";
cout<<"原单词是\n";
for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"你最终猜到的是\n";
for(int i=0;i<a.size();i++)
{
if(bk[i]!=0)
cout<<a[i]<<" ";
else
cout<<"_ ";
}
cout<<"\n";
cout<<"--------------------------------------------\n\n";
break;
}
cout<<"剩余次数为<<"<<num<<">>次\n\n";
cout<<"--------------------------------------------\n\n";
cout<<"请输入一个字母\n";
}
else
{
cout<<"--------------------------------------------\n";
cout<<"恭喜你猜对了一个正确的字母,此时的单词是\n";
for(int i=0;i<a.size();i++)
{
if(bk[i]!=0)
cout<<a[i]<<" ";
else
cout<<"_ ";
}
cout<<endl<<endl;
cout<<"--------------------------------------------\n\n";
cout<<"请输入一个字母\n";
}
}
}
}

小实例 hangman game的更多相关文章

  1. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

  2. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. Objective-C之代理设计模式小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  4. Objective-C之@类别小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. OC小实例关于init方法不小心的错误

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. canva实践小实例 —— 马赛克效果

    前面给大家带来了操作像素的API,此时此刻,我觉得应该配以小实例来进行进一步的说明和演示,以便给大家带来更宽广的视野和灵感,你们看了我的那么多的文章,应该是懂我的风格,废话不多说,进入正题: 这次给大 ...

  7. canvas实践小实例二 —— 扇形

    俗话说:发图不留种,菊花万人捅!我这里想延伸一下:教学不给例,说你是傻逼!哎呀,还挺押韵,嘻嘻,开个玩笑! 我们都讲了四期API的知识了,估计大家看的也是枯燥的很啊,前面的小实例也是太简单,简直不解渴 ...

  8. canvas实践小实例一 —— 画板工具

    前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...

  9. HTML5自学笔记[ 13 ]canvas绘图小实例之方块移动

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. UIView convertRect

    CGRect newRect = [self.view.window convertRect:self.blueView.frame fromView:self.redView]; NSLog(@&q ...

  2. FOBiz组合模糊查询

    List list= delegator.findList("Entity",condition , null, null, null, false);其中condition为:组 ...

  3. VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)

    1.前期准备 具体可见VS2010 使用TeeChart绘图控件 - 之一 控件和类的导入 1. 1 添加TeeChart控件,给控件添加变量m_TeeChart 添加TeeChart控件,右击控件, ...

  4. 【转】SDK、JDK、JRE、JVM、JDT、CDT等之间的区别与联系 .

    相信大多数java初学者被这些概念搞蒙过,它们之间到底有什么区别,又有什么联系呢?下面我将一一解开大家心中的谜团. 首先,给大家解释一下这些概念: 1.SDK(Software DevelopKit, ...

  5. jsp ajax 数据库Demo

    转自:http://blog.csdn.net/rushkid02/article/details/7515058 下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式 ...

  6. 第一周 Leetcode 57. Insert Interval (HARD)

    Insert interval  题意简述:给定若干个数轴上的闭区间,保证互不重合且有序,要求插入一个新的区间,并返回新的区间集合,保证有序且互不重合. 只想到了一个线性的解法,所有区间端点,只要被其 ...

  7. 【WIP】Bootstrap 基础

    创建: 2017/09/28   更新: 2017/10/14 标题加上[WIP]

  8. css样式之vertical-align垂直居中的应用

    css样式之vertical-align垂直居中的应用:将图片垂直左右居中 元素垂直居中 1:必须给容器父元素加上text-align:center 2:必须给当前元素转换成行内块元素,display ...

  9. Swagger 教程

    转自   Vojtech Ruzicka的编程博客 (一)Swagger和SpringFox 记录REST API非常重要.它是一个公共接口,其他模块,应用程序或开发人员可以使用它.即使你没有公开曝光 ...

  10. C# System.Environment.GetFolderPath的使用 [转]

    原文:https://blog.csdn.net/yongyong521/article/details/75105853 获取系统文件目录 string strPath = Environment. ...