猜单词游戏

游戏说明

运行须知:

  请将压缩文件中的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文件


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值