游戏说明
运行须知:
请将压缩文件中的list.txt englishi.txt people.txt answer.txt放入D盘中的game文件夹中才能正常运行游戏,或者更改文件途径。
输入1可以登录用户,输入2可以游客试玩,用户登录可以查看单词本,里面有本游戏所粗存的所有单词及意思,游客只能游戏,不能查看单词本,如果强行查看只有强行退出游戏重开。
目前可以登录的四个用户是:
账号 密码
2001 2001
2002 2002
2005 2005
2333 4666
(注册功能暂未开启。。。。。。。QAQ)
游戏规则:
系统会在储存的单词中随机挑选一个单词并抹去其中一个字母。你需要猜测“*”部位的字母。在生词模式下,你可以将词汇加入生词本。在怀旧模式下,你所猜测的是你加入生词本的词。玩家登陆有福利可以查看词典。
代码简介:
有一个people类,配合文件一起进行登录操作,运用了文件存储单词,学习了使用随机数,用了数组储存文件中的内容,有菜单界面函数,游戏函数,登录函数,在代码中有注释。
思路:
刚开始的时候按要求先写出了最基础的,猜单词,然后在猜单词的基础上开始回忆玩过的游戏,开始分游戏的模式,然后开始有用户登录和玩家试玩,看起来更像游戏,为了区分玩家和游客的区别又在玩家方面加了可以看单词本的功能。
- #include <iostream>
- #include <fstream>
- #include <string>
- #include<ctime>
- #include<conio.h>
- using namespace std;
- class people
- {
- public:
- int snum;
- int spassword;
- people * next;
- };
- people *head1=NULL;
- void menu();//菜单函数
- void star();//链接游戏的函数
- void instruction();//游戏说明
- void startgame1();//生词模式函数
- void startgame2();//怀旧模式函数
- void denglu();//玩家登陆函数
- void enter();//没啥大用的链接其他函数的函数
- void danci();//登录用户查看单词本的函数
- int main()
- {
- cout<<"玩家登陆请输入1,游客试玩请输入2,退出请输入0"<<endl;
- int n;
- while(n)
- {
- cout<<"请选择操作"<<endl;
- cin>>n;
- switch(n)
- {
- case 1:
- denglu();
- break;
- case 2:
- star();
- break;
- }
- }
- }
- void star()
- {
- int xuanxiang;
- menu();//显示菜单
- while(xuanxiang)//选择操作
- {
- cout<<"请选择操作"<<endl;
- cin>>xuanxiang;
- system("cls");
- switch(xuanxiang)
- {
- case 1:
- instruction();//游戏说明
- menu() ;
- break;
- case 2:
- enter();//游戏开始
- menu() ;
- break;
-
- }
- }
- }
- void star2()
- {
- int xuanxiang;
- menu();//显示菜单
- while(xuanxiang)//选择操作
- {
- cout<<"请选择操作"<<endl;
- cin>>xuanxiang;
- system("cls");
- switch(xuanxiang)
- {
- case 1:
- instruction();//游戏说明
- menu() ;
- break;
- case 2:
- enter();//游戏开始
- menu() ;
- break;
- case 3:
- danci();
- menu() ;
- break;
-
- }
- }
- }
-
-
-
-
- void denglu()
- {
- int m,n;
- int snum,spassword;
- ifstream read("d:\\game\\people.txt",ios::in);
- read.seekg(0,ios::beg);
- cout<<"请输入账号"<<endl;
- cin>>m;
- cout<<"请输入密码"<<endl;
- cin>>n;
- while(read>>snum>>spassword)
- {
- if(snum==m&&spassword==n)
- star2();
- }
- read.close ();
- }
-
-
-
- void menu()
- {
- cout<<"***************欢迎来到猜词游戏**************"<<endl;
- cout<<endl;
- cout<<endl;
- cout<<"*****************请选择操作******************"<<endl;
- cout<<endl;
- cout<<"*****************0.退出游戏******************"<<endl;
- cout<<endl;
- cout<<"*****************1.游戏规则******************"<<endl;
- cout<<endl;
- cout<<"*****************2.进入游戏******************"<<endl;
- cout<<endl;
- cout<<"*****************3.查看词典(仅登陆用户使用)"<<endl;
- cout<<endl;
- }
- void instruction()//等到全部做完再写游戏说明
- {
- cout<<"游戏规则:"<<endl;
- cout<<"系统会在储存的单词中随机挑选一个单词并抹去其中一个字母。"<<endl;
- cout<<"你需要猜测“*”部位的字母。"<<endl;
- cout<<"在生词模式下,你可以将词汇加入生词本。"<<endl;
- cout<<"在怀旧模式下,你可以练习曾经错过的词。"<<endl;
- cout<<"玩家登陆有福利可以查看词典哦。"<<endl;
-
- }
- void enter()
- {
- cout<<"*****************1.生词模式******************"<<endl;
- cout<<endl;
- cout<<"*****************2.怀旧模式******************"<<endl;
- cout<<endl;
- cout<<"*****************0.退出游戏******************"<<endl;
- cout<<endl;
- int n;
- while(n)
- {
- cout<<"请选择模式,0退出"<<endl;
- cin>>n;
- system("cls");
- switch(n)
- {
- case 1:
- startgame1();
- break;
- case 2:
- startgame2();
- break;
- }
-
- }
-
- }
- void startgame1()
- {
- cout<<"game star~~~~~~~~~~~你,准备好迎接挑战了吗?"<<endl;
- srand((unsigned)time(0));
- ifstream in;
- int ijudge;
- int iline=0,irand1,irand2,irand3,isize;
- int i=0;
- char s[100][100],*sline,s1,s2;
- //打开文件并将数据存到数组中
- in.open("d:\\game\\answer.txt",ios::in);
- if(in)
- {
- while(!in.eof())
- {
- in>>s[iline];
- iline++;
- if(iline>=100)
- break;
- }
- }
- else
- cout<<"file not found!"<<endl;
-
- //随机选一个单词
- irand1=rand()%iline;//随机选一个单词
- isize=strlen(s[irand1]);//得到该单词长度
- srand(int(time(0)));
- irand2=rand()%isize;//随机选取某个字母位
- sline=new char[irand2];
- strcpy(sline,s[irand1]);
- for( i=0;i<=isize;i++)
- {
- if(i==irand2)
- {
- s1=s[irand1][irand2];
- s[irand1][irand2]='*';
- }
- }
-
- //开始游戏
-
- while(1)
- {
- if(i==0)
- {
- i++;
- }
- cout<<endl;
- cout<<s[irand1]<<endl;
- cout<<endl;
- cin>>s2;
- if(s1==s2)
- {
- cout<<"答对啦~~~~"<<endl;
- s[irand1][irand2]=s1;
- }
- else
- {
- cout<<"答错了,要加油哦QAQ"<<endl;
- s[irand1][irand2]=s1;
- }
- cout<<"******是否将该单词加入生词本******"<<endl;
- cout<<"*********1-是,2-否***************"<<endl;
- cin>>ijudge;
- if(ijudge==1)
- {
- ofstream input("d:\\game\\list.txt",ios::app);
- input<<s[irand1]<<endl;
- input.close();
- }
- cout<<"是否继续?1--是,2--否"<<endl;
- cin>>ijudge;
- if(ijudge==2)
- break;
- else
- {
- srand(int(time(0)));
- irand1=rand()%iline;//随机选一个单词
- isize=strlen(s[irand1]);//得到该单词长度
- srand(int(time(0)));
- irand2=rand()%isize;//随机选取某个字母位
- sline=new char[irand2];
- strcpy(sline,s[irand1]);
- for(int i=0;i<=isize;i++)
- {
- if(i==irand2)
- {
- s1=s[irand1][irand2];
- s[irand1][irand2]='*';
- }
- }
- }
-
- }
- in.close();
- }
- void startgame2()
- {
- cout<<"game star,温习巩固记忆更强"<<endl;
- srand((unsigned)time(0));
- ifstream in;
- int ijudge;
- int iline=0,irand1,irand2,irand3,isize;
- int i=0;
- char s[100][100],*sline,s1,s2;
- //打开文件并将数据存到数组中
- in.open("d:\\game\\list.txt",ios::in);
- if(in)
- {
- while(!in.eof())
- {
- in>>s[iline];
- iline++;
- if(iline>=100)
- break;
- }
- }
- else
- cout<<"file not found!"<<endl;
-
- //随机选一个单词
- irand1=rand()%iline;//随机选一个单词
- isize=strlen(s[irand1]);//得到该单词长度
- srand(int(time(0)));
- irand2=rand()%isize;//随机选取某个字母位
- sline=new char[irand2];
- strcpy(sline,s[irand1]);
- for( i=0;i<=isize;i++)
- {
- if(i==irand2)
- {
- s1=s[irand1][irand2];
- s[irand1][irand2]='*';
- }
- }
-
- //开始游戏
-
- while(1)
- {
- if(i==0)
- {
- i++;
- }
- cout<<endl;
- cout<<s[irand1]<<endl;
- cout<<endl;
- cin>>s2;
- if(s1==s2)
- {
- cout<<"答对啦~~~~"<<endl;
- s[irand1][irand2]=s1;
- }
- else
- {
- cout<<"答错了,要加油哦QAQ"<<endl;
- s[irand1][irand2]=s1;
- }
- cout<<"是否继续?1--是,2--否"<<endl;
- cin>>ijudge;
- if(ijudge==2)
- break;
- else
- {
- srand(int(time(0)));
- irand1=rand()%iline;//随机选一个单词
- isize=strlen(s[irand1]);//得到该单词长度
- srand(int(time(0)));
- irand2=rand()%isize;//随机选取某个字母位
- sline=new char[irand2];
- strcpy(sline,s[irand1]);
- for(int i=0;i<=isize;i++)
- {
- if(i==irand2)
- {
- s1=s[irand1][irand2];
- s[irand1][irand2]='*';
- }
- }
- }
-
- }
- in.close();
- }
- void danci()
- {
- char danci[100],zhongwen[100];
- ifstream instuf("d:\\game\\englishi.txt",ios::in);
- instuf.seekg(0,ios::beg);
- if(!instuf)
- {
- cout<<"file could not be open."<<endl;
- abort();
- }
- while(instuf>>danci>>zhongwen)
- {cout<<danci<<" "<<zhongwen<<endl;}
- instuf.close();
- }
请自己选择路径添加相应的txt文件