代码

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int bk[110];
  4. string sj(int t)
  5. {
  6. string ans="";
  7. for(int i=0;i<t;i++)
  8. ans=ans+char((rand()%26)+'a');
  9. return ans;
  10. }
  11. main()
  12. {
  13. srand(time(0));
  14. cout<<"hangman游戏总共有6次猜的机会,可以选择难度\n";
  15. cout<<"easy--5个字母组成的单词\nnormal--8个字母组成的单词\nhard--12个字母组成的单词\nlunatic--26个字母组成的单词\n";
  16. while(1)
  17. {
  18. int sum;
  19. cout<<"你选择的难度为\n请输入easy,normal,hard或者lunatic\n";
  20. f1:
  21. string e;
  22. cin>>e;
  23. if(e=="easy")
  24. sum=5;
  25. else if(e=="normal")
  26. sum=8;
  27. else if(e=="hard")
  28. sum=12;
  29. else if(e=="lunatic")
  30. sum=26;
  31. else
  32. {
  33. cout<<"你输入了非法的选项请重新输入!!!\n";
  34. goto f1;
  35. }
  36. string a=sj(sum);
  37. int num=6;
  38. memset(bk,0,sizeof(bk));
  39. //cout<<a<<endl;
  40. cout<<"请输入一个字母\n";
  41. while(1)
  42. {
  43. f2:
  44. string t;
  45. cin>>t;
  46. if(t.size()>1)
  47. {
  48. cout<<"输入了多个字母请重新输入\n";
  49. goto f2;
  50. }
  51. int f,ff;
  52. f=1;
  53. ff=0;
  54. for(int i=0;i<a.size();i++)
  55. if(a[i]==t[0])
  56. {
  57. bk[i]++;
  58. if(bk[i]==1)
  59. f=0;
  60. else
  61. ff=1;
  62. }
  63. int ac=1;
  64. for(int i=0;i<a.size();i++)
  65. if(bk[i]==0)
  66. {
  67. ac=0;
  68. break;
  69. }
  70. if(ac)
  71. {
  72. cout<<"--------------------------------------------\n\n";
  73. cout<<"恭喜你完全猜出来了!!!你还剩余<<"<<num<<">>次机会\n";
  74. cout<<"原单词是\n";
  75. for(int i=0;i<a.size();i++)
  76. {
  77. if(bk[i]!=0)
  78. cout<<a[i]<<" ";
  79. else
  80. cout<<"_ ";
  81. }
  82. cout<<endl;
  83. cout<<"--------------------------------------------\n\n";
  84. break;
  85. }
  86. if(f)
  87. {
  88. num--;
  89. cout<<"--------------------------------------------\n";
  90. if(f&&!ff)
  91. cout<<"你猜的字母在原单词中没有出现!!!\n";
  92. else if(ff)
  93. cout<<"你猜了一个你已经猜过的正确的字母!!!\n";
  94. if(!num)
  95. {
  96. cout<<"--------------------------------------------\n\n";
  97. cout<<"你已经失败了!!!hangman已经完成了!!!\n";
  98. cout<<"原单词是\n";
  99. for(int i=0;i<a.size();i++)
  100. cout<<a[i]<<" ";
  101. cout<<endl;
  102. cout<<"你最终猜到的是\n";
  103. for(int i=0;i<a.size();i++)
  104. {
  105. if(bk[i]!=0)
  106. cout<<a[i]<<" ";
  107. else
  108. cout<<"_ ";
  109. }
  110. cout<<"\n";
  111. cout<<"--------------------------------------------\n\n";
  112. break;
  113. }
  114. cout<<"剩余次数为<<"<<num<<">>次\n\n";
  115. cout<<"--------------------------------------------\n\n";
  116. cout<<"请输入一个字母\n";
  117. }
  118. else
  119. {
  120. cout<<"--------------------------------------------\n";
  121. cout<<"恭喜你猜对了一个正确的字母,此时的单词是\n";
  122. for(int i=0;i<a.size();i++)
  123. {
  124. if(bk[i]!=0)
  125. cout<<a[i]<<" ";
  126. else
  127. cout<<"_ ";
  128. }
  129. cout<<endl<<endl;
  130. cout<<"--------------------------------------------\n\n";
  131. cout<<"请输入一个字母\n";
  132. }
  133. }
  134. }
  135. }

小实例 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. Cisco VPP(1) 简单介绍

    一.简单介绍 VPP全称Vector Packet Processing.是Cisco2002年开发的商用代码. 2016年2月11号,Linux基金会创建FD.io项目.Cisco将VPP代码的开源 ...

  2. ios ionic 装平台 笔记

    1.安装cnpm : npm install -g cnpm --registry=https://registry.npm.taobao.org 2.An error occurred when I ...

  3. 关于三星手机调用相机返回后activity被回收的问题

    今天遇到个问题很蛋疼啊,别的手机没问题,唯独三星机型的手机跳转到相机之后,回来activity没了.这个或许是三星内部回收机制的关系,因为相机打开之后消耗会比较大, 所以后面的进程都给暂时回收掉了,加 ...

  4. allonsy

    时间限制 1s 空间限制 512MB 2.1 题目描述 "Allons-y!" 时间还算足够,好好看看题吧. 有一种说法,时间线是扭曲的,会相互交织.(一般在科幻片里比较流行?) ...

  5. 【高德地图API】Pivot控件中加载地图并禁止Pivot手势

    如题,解决方案,参考[Windows phone应用开发[20]-禁止Pivot手势]http://www.cnblogs.com/chenkai/p/3408658.html. xaml代码清单   ...

  6. Linux必知必会的目录结构

    1.目录结构 /bin 二进制文件 命令 /sbin 超级命令 只有root用户可以使用 /boot 系统的引导文件 系统内核 /dev 设备文件 光盘 硬盘分区 /etc 系统配置文件 /home ...

  7. find_in_set的用法(某个字段包含某个字符)

    有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4的格式存 ...

  8. ACM_哥德巴赫猜想(素数筛)

    哥德巴赫猜想 Time Limit: 2000/1000ms (Java/Others) Problem Description: 哥德巴赫猜想大概是这么一回事:“偶数(>=4) == 两个质数 ...

  9. 328 Odd Even Linked List 奇偶链表

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  10. easyui datagrid 高度布局自适应

    最近在把以前写的一个项目改成用easyui做前端.过程中遇到了不少问题.其中一个就是datagrid不能很好的布局.想了好多办法都有局限.最后想到会不会是布局(easyui-layout)的问题,经过 ...