C++猜单词游戏

游戏说明

运行须知:

  请将压缩文件中的list.txt englishi.txt people.txt answer.txt放入D盘中的game文件夹中才能正常运行游戏,或者更改文件途径。

 

  输入1可以登录用户,输入2可以游客试玩,用户登录可以查看单词本,里面有本游戏所粗存的所有单词及意思,游客只能游戏,不能查看单词本,如果强行查看只有强行退出游戏重开。

 

  目前可以登录的四个用户是:

账号 密码

2001 2001

2002 2002

2005 2005

2333 4666

(注册功能暂未开启。。。。。。。QAQ)

 

游戏规则:

系统会在储存的单词中随机挑选一个单词并抹去其中一个字母。你需要猜测“*”部位的字母。在生词模式下,你可以将词汇加入生词本。在怀旧模式下,你所猜测的是你加入生词本的词。玩家登陆有福利可以查看词典。

 

代码简介:

有一个people类,配合文件一起进行登录操作,运用了文件存储单词,学习了使用随机数,用了数组储存文件中的内容,有菜单界面函数,游戏函数,登录函数,在代码中有注释。

 

思路:

   刚开始的时候按要求先写出了最基础的,猜单词,然后在猜单词的基础上开始回忆玩过的游戏,开始分游戏的模式,然后开始有用户登录和玩家试玩,看起来更像游戏,为了区分玩家和游客的区别又在玩家方面加了可以看单词本的功能。

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include<ctime>
  5. #include<conio.h>
  6. using namespace std;
  7. class people
  8. {
  9. public:
  10. int snum;
  11. int spassword;
  12. people * next;
  13. };
  14. people *head1=NULL;
  15. void menu();//菜单函数
  16. void star();//链接游戏的函数
  17. void instruction();//游戏说明
  18. void startgame1();//生词模式函数
  19. void startgame2();//怀旧模式函数
  20. void denglu();//玩家登陆函数
  21. void enter();//没啥大用的链接其他函数的函数
  22. void danci();//登录用户查看单词本的函数
  23. int main()
  24. {
  25. cout<<"玩家登陆请输入1,游客试玩请输入2,退出请输入0"<<endl;
  26. int n;
  27. while(n)
  28. {
  29. cout<<"请选择操作"<<endl;
  30. cin>>n;
  31. switch(n)
  32. {
  33. case 1:
  34. denglu();
  35. break;
  36. case 2:
  37. star();
  38. break;
  39. }
  40. }
  41. }
  42. void star()
  43. {
  44. int xuanxiang;
  45. menu();//显示菜单
  46. while(xuanxiang)//选择操作
  47. {
  48. cout<<"请选择操作"<<endl;
  49. cin>>xuanxiang;
  50. system("cls");
  51. switch(xuanxiang)
  52. {
  53. case 1:
  54. instruction();//游戏说明
  55. menu() ;
  56. break;
  57. case 2:
  58. enter();//游戏开始
  59. menu() ;
  60. break;
  61. }
  62. }
  63. }
  64. void star2()
  65. {
  66. int xuanxiang;
  67. menu();//显示菜单
  68. while(xuanxiang)//选择操作
  69. {
  70. cout<<"请选择操作"<<endl;
  71. cin>>xuanxiang;
  72. system("cls");
  73. switch(xuanxiang)
  74. {
  75. case 1:
  76. instruction();//游戏说明
  77. menu() ;
  78. break;
  79. case 2:
  80. enter();//游戏开始
  81. menu() ;
  82. break;
  83. case 3:
  84. danci();
  85. menu() ;
  86. break;
  87. }
  88. }
  89. }
  90. void denglu()
  91. {
  92. int m,n;
  93. int snum,spassword;
  94. ifstream read("d:\\game\\people.txt",ios::in);
  95. read.seekg(0,ios::beg);
  96. cout<<"请输入账号"<<endl;
  97. cin>>m;
  98. cout<<"请输入密码"<<endl;
  99. cin>>n;
  100. while(read>>snum>>spassword)
  101. {
  102. if(snum==m&&spassword==n)
  103. star2();
  104. }
  105. read.close ();
  106. }
  107. void menu()
  108. {
  109. cout<<"***************欢迎来到猜词游戏**************"<<endl;
  110. cout<<endl;
  111. cout<<endl;
  112. cout<<"*****************请选择操作******************"<<endl;
  113. cout<<endl;
  114. cout<<"*****************0.退出游戏******************"<<endl;
  115. cout<<endl;
  116. cout<<"*****************1.游戏规则******************"<<endl;
  117. cout<<endl;
  118. cout<<"*****************2.进入游戏******************"<<endl;
  119. cout<<endl;
  120. cout<<"*****************3.查看词典(仅登陆用户使用)"<<endl;
  121. cout<<endl;
  122. }
  123. void instruction()//等到全部做完再写游戏说明
  124. {
  125. cout<<"游戏规则:"<<endl;
  126. cout<<"系统会在储存的单词中随机挑选一个单词并抹去其中一个字母。"<<endl;
  127. cout<<"你需要猜测“*”部位的字母。"<<endl;
  128. cout<<"在生词模式下,你可以将词汇加入生词本。"<<endl;
  129. cout<<"在怀旧模式下,你可以练习曾经错过的词。"<<endl;
  130. cout<<"玩家登陆有福利可以查看词典哦。"<<endl;
  131. }
  132. void enter()
  133. {
  134. cout<<"*****************1.生词模式******************"<<endl;
  135. cout<<endl;
  136. cout<<"*****************2.怀旧模式******************"<<endl;
  137. cout<<endl;
  138. cout<<"*****************0.退出游戏******************"<<endl;
  139. cout<<endl;
  140. int n;
  141. while(n)
  142. {
  143. cout<<"请选择模式,0退出"<<endl;
  144. cin>>n;
  145. system("cls");
  146. switch(n)
  147. {
  148. case 1:
  149. startgame1();
  150. break;
  151. case 2:
  152. startgame2();
  153. break;
  154. }
  155. }
  156. }
  157. void startgame1()
  158. {
  159. cout<<"game star~~~~~~~~~~~你,准备好迎接挑战了吗?"<<endl;
  160. srand((unsigned)time(0));
  161. ifstream in;
  162. int ijudge;
  163. int iline=0,irand1,irand2,irand3,isize;
  164. int i=0;
  165. char s[100][100],*sline,s1,s2;
  166. //打开文件并将数据存到数组中
  167. in.open("d:\\game\\answer.txt",ios::in);
  168. if(in)
  169. {
  170. while(!in.eof())
  171. {
  172. in>>s[iline];
  173. iline++;
  174. if(iline>=100)
  175. break;
  176. }
  177. }
  178. else
  179. cout<<"file not found!"<<endl;
  180. //随机选一个单词
  181. irand1=rand()%iline;//随机选一个单词
  182. isize=strlen(s[irand1]);//得到该单词长度
  183. srand(int(time(0)));
  184. irand2=rand()%isize;//随机选取某个字母位
  185. sline=new char[irand2];
  186. strcpy(sline,s[irand1]);
  187. for( i=0;i<=isize;i++)
  188. {
  189. if(i==irand2)
  190. {
  191. s1=s[irand1][irand2];
  192. s[irand1][irand2]='*';
  193. }
  194. }
  195. //开始游戏
  196. while(1)
  197. {
  198. if(i==0)
  199. {
  200. i++;
  201. }
  202. cout<<endl;
  203. cout<<s[irand1]<<endl;
  204. cout<<endl;
  205. cin>>s2;
  206. if(s1==s2)
  207. {
  208. cout<<"答对啦~~~~"<<endl;
  209. s[irand1][irand2]=s1;
  210. }
  211. else
  212. {
  213. cout<<"答错了,要加油哦QAQ"<<endl;
  214. s[irand1][irand2]=s1;
  215. }
  216. cout<<"******是否将该单词加入生词本******"<<endl;
  217. cout<<"*********1-是,2-否***************"<<endl;
  218. cin>>ijudge;
  219. if(ijudge==1)
  220. {
  221. ofstream input("d:\\game\\list.txt",ios::app);
  222. input<<s[irand1]<<endl;
  223. input.close();
  224. }
  225. cout<<"是否继续?1--是,2--否"<<endl;
  226. cin>>ijudge;
  227. if(ijudge==2)
  228. break;
  229. else
  230. {
  231. srand(int(time(0)));
  232. irand1=rand()%iline;//随机选一个单词
  233. isize=strlen(s[irand1]);//得到该单词长度
  234. srand(int(time(0)));
  235. irand2=rand()%isize;//随机选取某个字母位
  236. sline=new char[irand2];
  237. strcpy(sline,s[irand1]);
  238. for(int i=0;i<=isize;i++)
  239. {
  240. if(i==irand2)
  241. {
  242. s1=s[irand1][irand2];
  243. s[irand1][irand2]='*';
  244. }
  245. }
  246. }
  247. }
  248. in.close();
  249. }
  250. void startgame2()
  251. {
  252. cout<<"game star,温习巩固记忆更强"<<endl;
  253. srand((unsigned)time(0));
  254. ifstream in;
  255. int ijudge;
  256. int iline=0,irand1,irand2,irand3,isize;
  257. int i=0;
  258. char s[100][100],*sline,s1,s2;
  259. //打开文件并将数据存到数组中
  260. in.open("d:\\game\\list.txt",ios::in);
  261. if(in)
  262. {
  263. while(!in.eof())
  264. {
  265. in>>s[iline];
  266. iline++;
  267. if(iline>=100)
  268. break;
  269. }
  270. }
  271. else
  272. cout<<"file not found!"<<endl;
  273. //随机选一个单词
  274. irand1=rand()%iline;//随机选一个单词
  275. isize=strlen(s[irand1]);//得到该单词长度
  276. srand(int(time(0)));
  277. irand2=rand()%isize;//随机选取某个字母位
  278. sline=new char[irand2];
  279. strcpy(sline,s[irand1]);
  280. for( i=0;i<=isize;i++)
  281. {
  282. if(i==irand2)
  283. {
  284. s1=s[irand1][irand2];
  285. s[irand1][irand2]='*';
  286. }
  287. }
  288. //开始游戏
  289. while(1)
  290. {
  291. if(i==0)
  292. {
  293. i++;
  294. }
  295. cout<<endl;
  296. cout<<s[irand1]<<endl;
  297. cout<<endl;
  298. cin>>s2;
  299. if(s1==s2)
  300. {
  301. cout<<"答对啦~~~~"<<endl;
  302. s[irand1][irand2]=s1;
  303. }
  304. else
  305. {
  306. cout<<"答错了,要加油哦QAQ"<<endl;
  307. s[irand1][irand2]=s1;
  308. }
  309. cout<<"是否继续?1--是,2--否"<<endl;
  310. cin>>ijudge;
  311. if(ijudge==2)
  312. break;
  313. else
  314. {
  315. srand(int(time(0)));
  316. irand1=rand()%iline;//随机选一个单词
  317. isize=strlen(s[irand1]);//得到该单词长度
  318. srand(int(time(0)));
  319. irand2=rand()%isize;//随机选取某个字母位
  320. sline=new char[irand2];
  321. strcpy(sline,s[irand1]);
  322. for(int i=0;i<=isize;i++)
  323. {
  324. if(i==irand2)
  325. {
  326. s1=s[irand1][irand2];
  327. s[irand1][irand2]='*';
  328. }
  329. }
  330. }
  331. }
  332. in.close();
  333. }
  334. void danci()
  335. {
  336. char danci[100],zhongwen[100];
  337. ifstream instuf("d:\\game\\englishi.txt",ios::in);
  338. instuf.seekg(0,ios::beg);
  339. if(!instuf)
  340. {
  341. cout<<"file could not be open."<<endl;
  342. abort();
  343. }
  344. while(instuf>>danci>>zhongwen)
  345. {cout<<danci<<" "<<zhongwen<<endl;}
  346. instuf.close();
  347. }

请自己选择路径添加相应的txt文件


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript工具

在线 JavaScript格式美化工具 http://jsbeautifier.org/ 在线JS调试工具 http://jsbin.com/ 脚本兼容检查 http://www.thefrontside.net/crosscheck Komodo Edit http://www.activestate.com/komodo_edit/ Venkman Development http://www.hacksrus.com/~ginda/venkman/

Oracle分析函数一——函数列表

Oracle 分析函数 Oracle 分析函数——函数列表 SUM &#xff1a; 该函数计算组中表达式的累积和 MIN &#xff1a; 在一个组中的数据窗口中查找表达式的最小值 MAX &#xff1a; 在一个组中的数据窗口中查找表达式的最大值 AVG &#xff1a;…

这次,被游戏玩了

这次&#xff0c;我被游戏玩了 &#xff0c;我的一个朋友在玩台服的未来启示录&#xff0c;看那个场景有点像天堂。他的配置为Intel p43.0, gigabyte 915, DDR400512*2牌子忘记了&#xff0c;但也不错不是杂牌的, maxsun 9500GT TC512高清版&#xff0c;WD160G SATA。玩是…

用MATLAB实现神经网络

一 BP神经网络实现不使用MATLAB神经网络工具箱问题分析MATLAB实现代码运行结果绘制的图像 二 使用MATLAB的神经网络工具箱简易实现BP网络问题分析工具箱中的相关函数一些参考了MATLAB自带的英文手册mapminmax函数newff函数新版本关于nettrainParam的常用属性train函数sim函数 M…

Follow Me:CCIE RS--使用小凡模拟器搭建的CCIE拓扑图

我用小凡模拟器搭建了CCIE LAB 拓扑图有何不对的地方请指正转载于:https://blog.51cto.com/tanfo/216831

【积累】非常全面的开源数据集

非常全面的开源数据集 由skymind.ai公布 非常全面的开源数据集最近新增数据集自然图像数据集地理空间数据人工数据集人脸数据集视频数据集文本数据集问答数据集情感数据集推荐和排名系统语音数据集音符音乐数据集健康 &生物数据政府&统计数据网络和图形其它数据集 最近…

女性最常说的5大谎言:

女性最常说的5大谎言&#xff1a; “没事&#xff0c;我很好” “哦&#xff0c;这不是新买的&#xff0c;买很久了” “这不是很贵” “这是打折时买的” “我正在路上” 我好像都曾听过&#xff01; 摘自&#xff1a;http://lady.163.com/special/00261MPK/kexue004.html

【资源】史上最全数据集汇总

无论是数据挖掘还是目前大热的深度学习&#xff0c;都离不开“大数据”。大公司们一般会有自己的数据&#xff0c;但对于创业公司或是高校老师、学生来说&#xff0c;“Where can I get large datasets open to the public” 是一个不得不面对的问题。 本文将为您提供一个网站/…

1030利用三层交换机实现VLAN间通信

实验相关文件在附件中转载于:https://blog.51cto.com/network0546/219543

非线性最优化(二)——高斯牛顿法和Levengerg-Marquardt迭代

高斯牛顿法和Levengerg-Marquardt迭代都用来解决非线性最小二乘问题(nonlinear least square)。 From Wiki The Gauss–Newton algorithm is a method used to solve non-linear least squares problems. It is a modification of Newtons method for finding a minimum of a …

为右键新建菜单添加内容

右键菜单的内容由注册表关联,通过修改注册表就可以定制鼠标右键快捷菜单中的“新建”菜单所包含的项目。 需要注意的是&#xff0c;在修改注册表以前要先将注册表备份&#xff0c;以免出现问题时无法恢复。 一、增加菜单项目1&#xff0e;首先&#xff0c;决定要增加到菜单中的…

逆透视变换详解 及 代码实现(一)

逆透视变换详解 及 代码实现&#xff08;一&#xff09; 中主要是原理的说明&#xff1a; 一、世界坐标轴和摄像机坐标轴 从下图中可以看到&#xff0c;世界坐标为(X,Y,Z) 相机坐标为(Xc,Yc,Zc) 而世界坐标变换到相机坐标存在一个旋转矩阵变换R以及一个位移变换T。 根据上图…

C调用C++链接库

C调用C链接库&#xff1a; 1.编写C代码&#xff0c;编写函数的时候&#xff0c;需要加入对C的接口&#xff0c;也就是extern “c" 2.由于C不能直接用"class.function”的形式调用函数&#xff0c;所以C中需要为C写一个接口函数。例如本来要调用student类的talk函数&a…

逆透视变换详解 及 代码实现(二)

根据 逆透视变换详解 及 代码实现(一)的原理 下面我用车上拍摄的车道图像&#xff0c;采用逆透视变换得到的图像&#xff0c;给出代码前我们先看下处理结果。 首先是原始图像&#xff1a; 下图为逆透视变换图像&#xff1a; 下面说具体的实现吧&#xff01;&#xff01; 一、…

[赵星理]《简单男人》--歌曲温暖你的心,激励你前进

简单的男人&#xff0c;简单的歌曲&#xff0c;赵星理《简单男人》送给所有身负家庭责任的人&#xff0c;要让家越来越美&#xff0c;再苦再累也不能后退。加油&#xff01;简单男人词曲&#xff1a;赵星理演唱&#xff1a;赵星理累不累也不许落泪醉不醉苦辣都值得回味要让家越…

ArrayList list = new ArrayList(20);中的list扩充几次

16. ArrayList list new ArrayList(20);中的list扩充几次&#xff08;&#xff09; A 0 B 1 C 2 D 3 答案&#xff1a;A ArrayList动态扩容机制 初始化&#xff1a;有三种方式 默认的构造器&#xff0c;将会以默认的大小来初始化内部的数组&#xff1a;public …

利用ATL创建com组件和如何在程序中使用组件的接口函数和设置接口的属性

这是一个ATL开发实例的流程&#xff1a; 1. 在atl中插入一个atl实例&#xff0c;然后添加一个类&#xff0c;派生自ccmdtarget。 2. 添加相应的属性或者方法&#xff0c;在这里需要明白一点的是&#xff0c;这个属性和方法其实是一个概念&#xff0c;只是添加一个属…

java 课外练习题

1.下列哪些是Thread类中的方法&#xff08;&#xff09; A start() B run() C exit() D getPriority() 解析&#xff1a;线程的就绪状态&#xff1a;新建线程后start()方法的调用&#xff0c;来启动线程&#xff0c;但此时线程并没有进入运行状态&#xff0c;只是…

关于ubuntu 是否需要使用std::到问题。

首先是在ubuntu下编译c要使用g&#xff0c;比如 g -Wall 01knap2.cpp -o 01knap2 而如果是编译c语言文件的话则需要用 gcc -Wall 01knap2.c -o 01knap2 即可&#xff0c;g编译得到的是.cpp文件&#xff0c;而gcc编译得到的是.c文件。 第二个是关于是否能够直接使用cout&#…

对一道基础string题及其变式题的思考与解析

1、下面程序的运行结果是&#xff08;&#xff09;&#xff08;选择一项&#xff09; String str1“hello”; String str2new String(“hello”); System.out.println(str1str2); A.true B.false C.hello D.he 答案&#xff1a;B 分析&#xff1a;str1没有使用new关键字&am…