ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

你想我猜小游戏

2022-05-13 19:03:19  阅读:141  来源: 互联网

标签:case cout int void gam2 小游戏 string


#include <iostream>
#include <algorithm>
#include <string>
#include<sstream>
#include<ctime>
#include<vector>

using namespace std;



class gam2
{
public:
	gam2(string str) :result1(str) {};
	~gam2();
	static string resultgam2;//用于存储电脑的数字
	string getresult();
	string compareresult();

private:
	string result1;

};

string gam2::resultgam2 = "0123";
string gam2::getresult()
{
	return result1;
}
string gam2::compareresult()
{
	int j = 0;
	int k = 0;//原本是放在第一个for循环里面的
	string str1 = result1;
	string str2 = gam2::resultgam2;
	for (int i = 0; i < 4; i++)
	{
		for (int g = 0; g < 4; g++)
		{
			if (str1[i] == str2[g])
			{
				if (i == g)
					j++;
				else
					k++;
			}
		}
	}
	string str3 = "0A0B";
	str3[0] = str3[0] + j;//原本j放for循环里面,不可见
	str3[2] = str3[2] + k;
	return str3;
}


gam2::~gam2()
{
}

int mainmenu();
void game1();
void game2();
void paihangbang();
string getresultgam2();
int isgam2available(string* j);
int isgam1available(string* j, int* A, int* B);
void gam1errorout();//用于错误退出
void gam1victory();
void gam1get(int& C, int& A, int& B, string& i);//用于读入并更新
void switch0(int& C, int& A, int& B, string& i, string& j, string& k);
void switch02(int& C, int& A, int& B, string& i, string& j, string& k);//解决0,2,2的问题,注:每个数字代表的是4,4,2一组的数字中知道有多少个。
void switch023(int& C, int& A, int& B, string& i, string& j, string& k);
void switch03(int& C, int& A, int& B, string& i, string& j, string& k);//解决0,3,1的问题
void switch032(int& C, int& A, int& B, string& i, string& j, string& k);
void switch033(int& C, int& A, int& B, string& i, string& j, string& k);
void switch1(int& C, int& A, int& B, string& i, string& j, string& k);
void switch11(int& C, int& A, int& B, string& i, string& j, string& k);//解决1,1,2的问题
void switch112(int& C, int& A, int& B, string& i, string& j, string& k);
void switch112_1(int& C, int& A, int& B, string& i, string& j, string& k);//解决知道后三个判断第一个的问题
void switch113(int& C, int& A, int& B, string& i, string& j, string& k);
void switch12(int& C, int& A, int& B, string& i, string& j, string& k);//解决1,2,1的问题
void switch123_1(int& C, int& A, int& B, string& i, string& j, string& k);//已知k23是,从j456选择一个,里面调用了switch112_1
void switch123_2(int& C, int& A, int& B, string& i, string& j, string& k);//已知k3是,j7不是,从j456选择两个,里面调用了switch112_1
void switch13(int& C, int& A, int& B, string& i, string& j, string& k);//解决1,3,0的问题
void switch2(int& C, int& A, int& B, string& i, string& j, string& k);
void switch22(int& C, int& A, int& B, string& i, string& j, string& k);//解决2,2,0的问题
void switch22_1(int& C, int& A, int& B, string& i, string& j, string& k);
void switch3(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA0(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA00(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA001(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA01(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA1(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA10(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA12(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA2(int& C, int& A, int& B, string& i, string& j, string& k);
void switchA21(int& C, int& A, int& B, string& i, string& j, string& k);



int main()
{
	while (mainmenu());
}

//主菜单
int mainmenu()
{
	system("cls");
	cout << "1,你想我猜" << endl;
	cout << "2,我想你猜" << endl;
	cout << "3,排行榜" << endl;
	cout << "4,退出" << endl;
	int i;
	cin >> i;
	switch (i)
	{
	case 1:
		game1();
		break;
	case 2:
		game2();
		break;
	case 3:
		paihangbang();
		break;
	case 4:
		return 0;
	default:
		cout << "输入错误!请重新输入" << endl;
		system("pause");
		break;
	}
	return 1;
}

//游戏1本体
void game1()
{
	system("cls");
	cout << "请想一个不重复的四位数,如 0123 并对电脑提出的数字进行反馈,如输入 2A1B 表示有两个数字位置正确,一个数字位置不对但是在四位数中" << endl;
	system("pause");
	cout << "0123" << endl;
	string i;//用于接收
	string j = "0123456789";
	string k = "0123";
	int A = 0, B = 0;//用于保存对应的数字
	cin >> i;
	/*
	while ((A == 4 && B == 0)==0)//结束条件
	{
		while (isgam1available(&i, &A, &B));//当返回值是0的时候,将会跳出,进行下一步,当返回值是1时,会继续执行这个子函数。

	}
	*/
	while (isgam1available(&i, &A, &B));//当返回值是0的时候,将会跳出,进行下一步,当返回值是1时,会继续执行这个子函数。
	int C = A + B;
	switch (C)
	{
	case 0:
		switch0(C, A, B, i, j, k);
		break;
	case 1:
		switch1(C, A, B, i, j, k);
		break;
	case 2:
		switch2(C, A, B, i, j, k);
		break;
	case 3:
		switch3(C, A, B, i, j, k);
		break;
	case 4:
		break;
	}
	//上面的整个过程完结之后,若是C!=4,则是“撒谎”的情况,若是C=4,则进行下一步,对k中的数进行组合,并依照A的值进行操作
	if (C == 4)
	{
		switch (A)
		{
		case 0:
			cout << k[1] << k[0] << k[2] << k[3] << endl;//2134
			gam1get(C, A, B, i);
			switchA0(C, A, B, i, j, k);
			break;
		case 1:
			cout << k[1] << k[0] << k[2] << k[3] << endl;
			gam1get(C, A, B, i);
			switchA1(C, A, B, i, j, k);
			break;
		case 2:
			cout << k[1] << k[0] << k[2] << k[3] << endl;
			gam1get(C, A, B, i);
			switchA2(C, A, B, i, j, k);
			break;
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void gam1errorout()
{
	cout << "年轻人不讲武德,来骗,我一个老实巴交的电脑,真是太坏了" << endl;
	system("pause");
	return;
}
void gam1victory()
{
	cout << "那必须是我啦!" << endl;
	system("pause");
	return;
}
void gam1get(int& C, int& A, int& B, string& i)
{
	cin >> i;
	while (isgam1available(&i, &A, &B));
	C = A + B;
	return;
}

int isgam1available(string* j, int* A, int* B)
{
	if ((*j)[1] == 'A' && (*j)[3] == 'B')
	{
		*A = (*j)[0] - '0';//数据转换
		*B = (*j)[2] - '0';
		if ((*A + *B) > 4)
		{
			cout << "输入不合法,请输入如输入 2A1B 表示有两个数字位置正确,一个数字位置不对但是在四位数中" << endl;
			cin >> *j;
			return 1;
		}
		else
			return 0;
	}
	else
	{
		cout << "输入不合法,请输入如输入 2A1B 表示有两个数字位置正确,一个数字位置不对但是在四位数中" << endl;
		cin >> *j;
		return 1;
	}
}
void switch0(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[7];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		switch02(C, A, B, i, j, k);
		break;
	case 3:
		switch03(C, A, B, i, j, k);
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch02(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[8];
	k[3] = j[9];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		switch (C)
		{
			k[0] = j[6];
			k[1] = j[7];
			k[2] = j[8];
			k[3] = j[9];
			cout << k << endl;
			gam1get(C, A, B, i);
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3:
		switch023(C, A, B, i, j, k);
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch023(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[8];
	k[3] = j[9];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		k[0] = j[5];
		k[1] = j[7];
		k[2] = j[8];
		k[3] = j[9];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
	case 3:
		k[0] = j[4];
		k[1] = j[7];
		k[2] = j[8];
		k[3] = j[9];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 2:
			k[0] = j[5];
			k[1] = j[6];
			k[2] = j[8];
			k[3] = j[9];
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4:
		break;
	default:
		break;
	}
	return;
}
void switch03(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[8];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		switch032(C, A, B, i, j, k);
		break;
	case 3:
		switch033(C, A, B, i, j, k);
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch032(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[7];
	k[3] = j[8];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2://j67是
		k[0] = j[4];
		k[1] = j[6];
		k[2] = j[7];
		k[3] = j[9];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 3:
			k[0] = j[5];
			k[1] = j[6];
			k[2] = j[7];
			k[3] = j[9];
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3:
		k[0] = j[4];
		k[1] = j[6];
		k[2] = j[7];
		k[3] = j[8];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 3:
			k[0] = j[5];
			k[1] = j[6];
			k[2] = j[7];
			k[3] = j[8];
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch033(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[9];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		k[0] = j[4];
		k[1] = j[5];
		k[2] = j[7];
		k[3] = j[8];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 3:
			k[0] = j[4];
			k[1] = j[6];
			k[2] = j[7];
			k[3] = j[8];
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 3:
				k[0] = j[5];
				k[1] = j[6];
				k[2] = j[7];
				k[3] = j[8];
				cout << k << endl;
				gam1get(C, A, B, i);
				switch (C)
				{
				case 4:
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch1(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[7];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 1:
		switch11(C, A, B, i, j, k);
		break;
	case 2:
		switch12(C, A, B, i, j, k);
		break;
	case 3:
		switch13(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch11(int& C, int& A, int& B, string& i, string& j, string& k)
{
	//这里的策略是先对4567中的那个找出来,然后对0123进行遍历
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[8];
	k[3] = j[9];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		switch112(C, A, B, i, j, k);
		break;
	case 3:
		switch113(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch112(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[6];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		k[1] = j[7];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 3:
			switch112_1(C, A, B, i, j, k);//这个函数将会只对k的第一位进行修改
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3:
		switch112_1(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch112_1(int& C, int& A, int& B, string& i, string& j, string& k)//只对k[0]进行修改,最多四次即可判断
{
	k[0] = j[0];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 3:
		k[0] = j[1];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 3:
			k[0] = j[2];
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 3:
				k[0] = j[3];
				cout << k << endl;
				gam1get(C, A, B, i);
				switch (C)
				{
				case 4:
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch113(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[6];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2:
		k[1] = j[5];
		switch112_1(C, A, B, i, j, k);
		break;
	case 3:
		k[1] = j[4];
		switch112_1(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch12(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[8];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 1://这种情况7,9肯定有,从j456位选一个
		k[2] = j[7];
		k[3] = j[9];
		switch123_1(C, A, B, i, j, k);
		break;
	case 2:
		k[0] = j[4];
		k[1] = j[5];
		k[2] = j[6];
		k[3] = j[9];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 1://7,8肯定有从j456选一个
			k[2] = j[7];
			k[3] = j[8];
			switch123_1(C, A, B, i, j, k);
			break;
		case 3://9肯定有,j7不是从j456选二
			k[3] = j[9];
			switch123_2(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3://有8,j7不是456选二
		k[3] = j[8];
		switch123_2(C, A, B, i, j, k);
		break;
	case 4:
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch123_1(int& C, int& A, int& B, string& i, string& j, string& k)//已知k23是,从j456选择一个
{
	k[0] = j[4];
	k[1] = j[5];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2://说明j6是
		k[1] = j[6];
		switch112_1(C, A, B, i, j, k);
		break;
	case 3:
		k[1] = j[6];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 2://说明j5是
			k[1] = j[5];
			switch112_1(C, A, B, i, j, k);
			break;
		case 3://说明j4是
			k[1] = j[4];
			switch112_1(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch123_2(int& C, int& A, int& B, string& i, string& j, string& k)//已知k3是,j7不是,从j456选择两个
{
	k[0] = j[7];
	k[1] = j[4];
	k[2] = j[5];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2://j6是
		k[2] = j[6];
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 2://j5是
			k[1] = j[5];
			switch112_1(C, A, B, i, j, k);
			break;
		case 3://j4是
			switch112_1(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3://j45是

		switch112_1(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch13(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[8];
	k[1] = j[4];
	k[2] = j[5];
	k[3] = j[6];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2://j7是
		k[3] = j[7];//此时k=8457
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 2://j6是
			k[2] = j[6];//此时k=8467
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 2://j567是
				k[1] = j[5];//k=8567
				switch112_1(C, A, B, i, j, k);
				break;
			case 3://j467是
				switch112_1(C, A, B, i, j, k);
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 3://j457是
			switch112_1(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3://j456都是
		switch112_1(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch2(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[7];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 0://与0,2,2同理
		j = "4567012389";
		switch02(C, A, B, i, j, k);
		break;
	case 1://与1,2,1同理
		j = "4567012389";
		switch12(C, A, B, i, j, k);
		break;
	case 2:
		switch22(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch22(int& C, int& A, int& B, string& i, string& j, string& k)//具体思路是先找两个再找两个,两次的程序差别不大,减少工作量
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[8];
	k[3] = j[9];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 0://j67是
		switch22_1(C, A, B, i, j, k);
		break;
	case 1:
		k[1] = j[6];//k=4689
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 0://j57是
			switch22_1(C, A, B, i, j, k);
			break;
		case 1:
			k[1] = j[7];//k=4789
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 0://j56是
				switch22_1(C, A, B, i, j, k);
				break;
			case 2://j47是
				switch22_1(C, A, B, i, j, k);
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 2://j46是
			switch22_1(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 2://j45是
		switch22_1(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch22_1(int& C, int& A, int& B, string& i, string& j, string& k)
{
	j = "4567012389";
	k[2] = j[4];
	k[3] = j[5];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 2://j67是
		k[2] = j[6];
		k[3] = j[7];
		switch (C)
		{
		case 4:
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 3:
		k[3] = j[6];//k=4689
		cout << k << endl;
		gam1get(C, A, B, i);
		switch (C)
		{
		case 2://j57是
			k[2] = j[5];
			k[3] = j[7];
			switch (C)
			{
			case 4:
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 3:
			k[3] = j[7];//k=4789
			cout << k << endl;
			gam1get(C, A, B, i);
			switch (C)
			{
			case 2://j56是
				k[2] = j[5];
				k[3] = j[6];
				switch (C)
				{
				case 4:
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4://j47是
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4://j46是
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4://j45是
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switch3(int& C, int& A, int& B, string& i, string& j, string& k)
{
	k[0] = j[4];
	k[1] = j[5];
	k[2] = j[6];
	k[3] = j[7];
	cout << k << endl;
	gam1get(C, A, B, i);
	switch (C)
	{
	case 0://同0,3,1
		j = "4567012389";
		switch03(C, A, B, i, j, k);
		break;
	case 1://同1,3,0
		j = "4567012389";
		switch13(C, A, B, i, j, k);
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switchA0(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[2] << k[1] << k[0] << k[3] << endl;//3214
			gam1get(C, A, B, i);
			switchA00(C, A, B, i, j, k);
			break;
		case 1:
			cout << k[2] << k[1] << k[0] << k[3] << endl;//3214
			gam1get(C, A, B, i);
			switchA01(C, A, B, i, j, k);
			break;
		case 2:
			cout << k[1] << k[0] << k[3] << k[2] << endl;//2143
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA00(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[3] << k[2] << k[1] << k[0] << endl;//4321
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 1:
			cout << k[2] << k[3] << k[1] << k[0] << endl;//3421
			gam1get(C, A, B, i);
			switchA001(C, A, B, i, j, k);
			break;
		case 2:
			cout << k[2] << k[3] << k[0] << k[1] << endl;//3412
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA001(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[3] << k[2] << k[0] << k[1] << endl;//4312
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA01(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[1] << k[2] << k[3] << k[0] << endl;//2341
			gam1get(C, A, B, i);
			switch (A)
			{
			case 0:
				cout << k[3] << k[0] << k[1] << k[2] << endl;//4123
				gam1get(C, A, B, i);
				switch (A)
				{
				case 4:
					gam1victory();
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 1:
			cout << k[1] << k[3] << k[0] << k[2] << endl;//2413
			gam1get(C, A, B, i);
			switch (A)
			{
			case 0:
				cout << k[2] << k[0] << k[3] << k[1] << endl;//3142
				gam1get(C, A, B, i);
				switch (A)
				{
				case 4:
					gam1victory();
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA1(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[2] << k[1] << k[0] << k[3] << endl;//3214
			gam1get(C, A, B, i);
			switchA10(C, A, B, i, j, k);
			break;
		case 2:
			cout << k[2] << k[1] << k[0] << k[3] << endl;//3214
			gam1get(C, A, B, i);
			switchA12(C, A, B, i, j, k);
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA10(int& C, int& A, int& B, string& i, string& j, string& k)
{
	if (C != 4 || A == 3)
	{
		gam1errorout();
		return;
	}
	else
	{
		switch (A)
		{
		case 0:
			cout << k[0] << k[2] << k[3] << k[1] << endl;//1342
			gam1get(C, A, B, i);
			switch (A)
			{
			case 1:
				cout << k[0] << k[3] << k[1] << k[2] << endl;//1423
				gam1get(C, A, B, i);
				switch (A)
				{
				case 4:
					gam1victory();
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 2:
			cout << k[2] << k[1] << k[3] << k[0] << endl;//3241
			gam1get(C, A, B, i);
			switch (A)
			{
			case 1:
				cout << k[3] << k[1] << k[0] << k[2] << endl;//4213
				gam1get(C, A, B, i);
				switch (A)
				{
				case 4:
					gam1victory();
					break;
				default:
					gam1errorout();
					break;
				}
				break;
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		default:
			gam1errorout();
			break;
		}
	}
	return;
}
void switchA12(int& C, int& A, int& B, string& i, string& j, string& k)
{
	switch (A)
	{
	case 0:
		cout << k[1] << k[3] << k[2] << k[0] << endl;//2431
		gam1get(C, A, B, i);
		switch (A)
		{
		case 1:
			cout << k[3] << k[0] << k[2] << k[1] << endl;//4132
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 1:
		cout << k[2] << k[0] << k[1] << k[3] << endl;//3124
		gam1get(C, A, B, i);
		switch (A)
		{
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 2:
		cout << k[1] << k[2] << k[0] << k[3] << endl;//2314
		gam1get(C, A, B, i);
		switch (A)
		{
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switchA2(int& C, int& A, int& B, string& i, string& j, string& k)
{
	switch (A)
	{
	case 0:
		cout << k[0] << k[1] << k[3] << k[2] << endl;//1243
		gam1get(C, A, B, i);
		switch (A)
		{
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 1:
		cout << k[2] << k[1] << k[0] << k[3] << endl;//3214
		gam1get(C, A, B, i);
		switchA21(C, A, B, i, j, k);
		break;
	case 4:
		gam1victory();
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}
void switchA21(int& C, int& A, int& B, string& i, string& j, string& k)
{
	switch (A)
	{
	case 0:
		cout << k[0] << k[3] << k[2] << k[1] << endl;//1432
		gam1get(C, A, B, i);
		switch (A)
		{
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 1:
		cout << k[0] << k[2] << k[1] << k[3] << endl;//1324
		gam1get(C, A, B, i);
		switch (A)
		{
		case 0:
			cout << k[3] << k[1] << k[2] << k[0] << endl;//4231
			gam1get(C, A, B, i);
			switch (A)
			{
			case 4:
				gam1victory();
				break;
			default:
				gam1errorout();
				break;
			}
			break;
		case 4:
			gam1victory();
			break;
		default:
			gam1errorout();
			break;
		}
		break;
	case 4:
		gam1victory();
		break;
	default:
		gam1errorout();
		break;
	}
	return;
}

//游戏2本体
void game2()
{
	system("cls");
	cout << "游戏开始,电脑已经想出了一个数字,请输入一个不重复的四位数,如 0123 ,若输出 2A1B 表示有两个数字位置正确,一个数字位置不对但是在四位数中" << endl;
	int i = 0;
	string j;
	gam2::resultgam2 = getresultgam2();
	for (i = 0; i < 15; i++)//用于控制回合数
	{
		cin >> j;
		while (isgam2available(&j));//当返回值是0的时候,将会跳出,进行下一步,当返回值是1时,会继续执行这个子函数。
		gam2 game = j;//不是很理解这个传值的机制或者说,初始化
		if ((gam2::resultgam2).compare(game.getresult()) == 0)//比较两个string类型字符串是否相等
		{
			cout << "恭喜你答对了!" << endl;
			break;
		}
		else
		{
			cout << game.compareresult() << endl;//输出反馈
		}
	}
	if (i >= 15)
		cout << "很遗憾,未在15回合内猜出正确答案" << endl;
	system("pause");
	return;
}

//初始化一个gam2的静态变量
string getresultgam2()
{
	char temp[] = "0123456789";
	random_shuffle(temp, temp + 10);
	temp[4] = 0;
	return temp;
}

//判断游戏2输入字符是否合法
int isgam2available(string* j)
{
	int count[10] = { 0 };//count[n]表示数字n对应的数组位置的数,如果这个数字出现了不止一次,那么这个位置的数就会自增不止一次,它的数字就会大于1
	for (int i = 0; i < 4; i++)
	{
		if ((*j)[i] >= '0' && (*j)[i] <= '9')//原本是j[i]
		{
			int n = (*j)[i] - '0';//提取数字
			count[n]++;
		}
		else
		{
			cout << "存在非法字符,请重新输入:" << endl;
			cin >> *j;
			return 1;
		}
	}
	for (int i = 0; i < 10; i++)//这里的i必须要声明数据类型
	{
		if (count[i] > 1)
		{
			cout << "存在重复数字,请输入含不重复数字的四位数,如0123:" << endl;
			cin >> *j;
			return 1;
		}
	}
	return 0;
}

void paihangbang()
{
	system("cls");
	cout << "其实这只是一个摆设,想不到吧" << endl;
	system("pause");
	return;
}

  

标签:case,cout,int,void,gam2,小游戏,string
来源: https://www.cnblogs.com/xjbhxcz/p/16267800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有