1+1小游戏 v1.0.2

A班陈旻霄  •  7个月前


#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
#define int long long
#define pause system("pause>nul")
#define cls system("cls");
int cz;
int vis[10010];
int bm(int a1,int a2,int a3,int a4)
{
	return a1*1000+a2*100+a3*10+a4;
}
int add(int x,int y)
{
	return (x+y)%10;
}
void game(int a1,int a2,int a3,int a4,int turn)
{
	cls;
	vis[bm(a1,a2,a3,a4)]=1;
	if(vis[bm(a1,a2,a3,a4)]==3)
	{
		cout<<"三次重复,该局为和局\n\n";
		cout<<"是否重新开始游戏?1是,0否\n";
		cin>>cz;
		while(cz!=1)
		{
			if(cz==0)
			{
				cls;
				exit(0);
			}
			cin>>cz;
		}
		cls;
		game(1,1,1,1,1);
	}
	if(a1+a2==0)
	{
		cout<<"你输了!\n\n";
		cout<<"是否重新开始游戏?1是,0否\n";
		cin>>cz;
		while(cz!=1)
		{
			if(cz==0)
			{
				cls;
				exit(0);
			}
			cin>>cz;
		}
		cls;
		game(1,1,1,1,1);
	}
	if(a3+a4==0)
	{
		cout<<"你赢了!\n\n";
		cout<<"是否重新开始游戏?1是,0否\n";
		cin>>cz;
		while(cz!=1)
		{
			if(cz==0)
			{
				cls;
				exit(0);
			}
			cin>>cz;
		}
		cls;
		game(1,1,1,1,1);
	}
	bool s1,s2,s3,s4;
	s1=s2=s3=s4=0;
	if(turn==1)
	{
		printf("P1:%c\t%c\n",(a1==0?' ':char(a1+'0')),(a2==0?' ':char(a2+'0')));
		printf("P2:%c\t%c\n",(a3==0?' ':char(a3+'0')),(a4==0?' ':char(a4+'0')));
		cout<<endl;
		if(a1*a3) s1=1;
		if(a1*a4) s2=1;
		if(a2*a3) s3=1;
		if(a2*a4) s4=1;
		cout<<"按任意键以让电脑操作";
		pause; 
		while(1)
		{
			cz=rand()%4+1;
			if(cz==1&&s1) game(add(a1,a3),a2,a3,a4,2);
			if(cz==2&&s2) game(add(a1,a4),a2,a3,a4,2);
			if(cz==3&&s3) game(a1,add(a2,a3),a3,a4,2);
			if(cz==4&&s4) game(a1,add(a2,a4),a3,a4,2);
		}
	}
	if(turn==2)
	{
		printf("P2:%c\t%c\n",(a3==0?' ':char(a3+'0')),(a4==0?' ':char(a4+'0')));
		printf("P1:%c\t%c\n",(a1==0?' ':char(a1+'0')),(a2==0?' ':char(a2+'0')));
		cout<<endl;
		cout<<"操作:"<<endl;
		if(a1*a3)
		{
			printf("1:P2左%d+P1左%d\n",a3,a1);
			s1=1;
		}
		if(a2*a3)
		{
			printf("2:P2左%d+P1右%d\n",a3,a2);
			s2=1;
		}
		if(a1*a4)
		{
			printf("3:P2右%d+P1左%d\n",a4,a1);
			s3=1;
		}
		if(a2*a4)
		{
			printf("4:P2右%d+P1右%d\n",a4,a2);
			s4=1;
		}
		cout<<endl;
		cout<<"请操作:";
		while(1)
		{
			cin>>cz;
			if(cz==1&&s1) game(a1,a2,add(a1,a3),a4,1);
			if(cz==2&&s2) game(a1,a2,add(a2,a3),a4,1);
			if(cz==3&&s3) game(a1,a2,a3,add(a1,a4),1);
			if(cz==4&&s4) game(a1,a2,a3,add(a2,a4),1);
		}
	}
}
signed main()
{
	game(1,1,1,1,1);
	return 0;
}

和上个版本一样,只不过你变成后手了


评论: