代码

#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. 从IBM的计划中分析出中国重新相当然的错误选择吗

    <IBM欲用物联网技术解决北京雾霾难题> http://security.zol.com.cn/469/4690141.html 读了上文.分析出的. 因为我没有太多的数据.不好分析. 有 ...

  2. POJ 1300 Door Man(欧拉通路)

    题目描写叙述: 你是一座大庄园的管家. 庄园有非常多房间,编号为 0.1.2.3..... 你的主人是一个心不在 焉的人,常常沿着走廊任意地把房间的门打开.多年来,你掌握了一个诀窍:沿着一个通道,穿 ...

  3. 2015南阳CCPC C - The Battle of Chibi DP树状数组优化

    C - The Battle of Chibi Description Cao Cao made up a big army and was going to invade the whole Sou ...

  4. Domain-specific language 领域特定语言

    https://en.wikipedia.org/wiki/Domain-specific_language A domain-specific language (DSL) is a compute ...

  5. 0x0118消息就是WM_SYSTIMER

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/c0f9bac9-d211-4b8b-ba99-f5a0ed0d2e0a/what-is-w ...

  6. postgis经常使用函数介绍(一)

    概述: 在进行地理信息系统开发的过程中,经常使用的空间数据库有esri的sde,postgres的postgis以及mySQL的mysql gis等等,在本文.给大家介绍的是有关postgis的一些经 ...

  7. samba访问其他服务器文件权限设置

    chown lynn.feng:lynn.feng nelson/ 我们知道档案权限对于一个系统的安全重要性,也知道档案的权限对于使用者与群组的相关性, 那如何修改一个档案的属性与权限呢? 我们这里介 ...

  8. MyEclipse个性设置

    MyEclipse个性设置 (1)Myeclipse 打开 jsp 的默认编辑器不好,会同时打开预览.所以做如下更改 Windows–>Perferences–>General–>E ...

  9. Django day30 自定义配置settings文件,分页器,版本控制

    一:自定义配置settings文件 1.有两套配置文件,默认配置,用户的配置 2.如果某个字段,用户配置了,就用用户的,如果没配置,就用默认的 二:分页器 1.三种分页: # 普通分页 from re ...

  10. dynamic_cast 与 typeid

    C++中的类型转换分为两种: 隐式类型转换: 显式类型转换. 隐式类型转换一般都是不经意间就发生了,比如int + float 时,int就被隐式的转换为float类型了. 显示类型转换包括四种方式: ...