c++扑克牌1.0

c++扑克牌1.0

此为第一版,需要多个人玩,之后更新单人版。
蒟蒻小游戏,大佬勿喷
c++扑克牌1.0_第1张图片

有问题请打在评论区!!

代码如下:

#include
#include
#include
#include
#include 
#include 
#include 
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1 : 0)
using namespace std ;
int key() 
{
	while (!KEY_DOWN(32));
	{
		return 1;			
	}
}
int sjs(int m,int n)
{
	int b=m+rand()%(n-m);
	return b;
} 
int sywjcp=0;
int pai[50]={0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
int payn[50]={0,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1};
int wan[10][50];
int ps=54,wjs;
void fp(int n)
{
	int s,i=1;
	while(ps>0)
	{
		s=sjs(1,15+1); 
		if(payn[s]>0)
		{
			wan[i][0]+=1;
			wan[i][pai[s]-2]+=1;
			payn[s]-=1;
			ps-=1;
			//cout<
			i+=1;
		}
		if(i>n)
		{
			i-=n;
		} 
	}
}
int chup[50]={0};
string shu="   "; 
void shuchupai(int n)
{
	for(int i=1;i<=15;i++)
	{
		for(int j=1;j<=wan[n][i];j++)
		{
			if(i==8)
			{
				cout<<"T ";
			}
			else if(i==9)
			{
				cout<<"J ";
			}
			else if(i==10)
			{
				cout<<"Q ";
			}
			else if(i==11)
			{
				cout<<"K ";
			}
			else if(i==12)
			{
				cout<<"A ";
			}
			else if(i==13)
			{
				cout<<"2 ";
			}
			else if(i==14)
			{
				cout<<"w ";
			}
			else if(i==15)
			{
				cout<<"W ";
			}
			else 
			{
				cout<<i+2<<' ';
			}	
			//cout<
		}	
	}
}
int cdp[100],y;
void pdyp(int n)
{
	int x;
	for(int i=1;i<=y;i++)
	{
		cdp[i]=0;
	}
	y=0;
	for(int i=0;i<shu.size();i+=2)
	{
		if(shu[i]=='T')
		{
			x=8;
		}
		else if(shu[i]=='J')
		{
			x=9;
		}
		else if(shu[i]=='Q')
		{
			x=10;
		}
		else if(shu[i]=='K')
		{
			x=11;
		}
		else if(shu[i]=='A')
		{
			x=12;
		}
		else if(shu[i]=='2')
		{
			x=13;
		}
		else if(shu[i]=='w')
		{
			x=14;
		}
		else if(shu[i]=='W')
		{
			x=15;
		}
		else if(shu[i]=='0')
		{
			x=0;
		}
		else{
			x=int(shu[i]-'0'-2);
		}
		y+=1;
		cdp[y]=x;
	}
}
int cplx=0,cplx2=0;//出牌类型:0无,1单,2对,3三带一,4三代二,5炸,6单顺子,7双顺子,8王炸;
int sfhf(int n)
{
	int j=shu.size();
	for(int i=1;i<j-1;i+=2)
	{
		if(shu[i]!=',')
		{
			cout<<11<<endl;
			return 0;
		}	
	}
	pdyp(n);
//	for(int i=1;i<=y;i++)
//	{
//		cout<
//	 } 
//    cout<
	cplx2=0;
	//cout<
	if(cdp[1]==0)
	{
		return 1;
	}
	else if(y==1&&wan[n][cdp[1]]>0)
	{
		cplx2=1;
	}
	else if(y==2&&((cdp[1]==14&&wan[n][14]==1&&cdp[2]==15&&wan[n][15]==1)||(cdp[1]==15&&wan[n][14]==1&&cdp[2]==14&&wan[n][15]==1)))
	{
		cplx2=8;
		cplx=0;
		chup[0]=0;
		wan[n][0]-=y;
		return 1;
	}
	else if(y==2&&wan[n][cdp[1]]>=2&&wan[n][cdp[2]]>=2&&cdp[1]==cdp[2])
	{
		cplx2=2;
	}
	else if(y==4&&wan[n][cdp[1]]>=3&&wan[n][cdp[2]]>=3&&wan[n][cdp[2]]>=3&&wan[n][cdp[4]]>=1&&cdp[1]==cdp[2]&&cdp[2]==cdp[3]&&cdp[1]!=cdp[4])
	{
		cplx2=3;
	}
	else if(y==5&&wan[n][cdp[1]]>=3&&wan[n][cdp[2]]>=3&&wan[n][cdp[2]]>=3&&wan[n][cdp[4]]>=2&&wan[n][cdp[5]]>=2&&cdp[1]==cdp[2]&&cdp[2]==cdp[3]&&cdp[1]!=cdp[4]&&cdp[4]==cdp[5])
	{
		cplx2=4;
	}
	else if(y==4&&wan[n][cdp[1]]==4&&cdp[1]==cdp[2]&&cdp[2]==cdp[3]&&cdp[3]==cdp[4])
	{
		cplx2=5;
	}
	else if(y>=5)
	{
		for(int i=2;i<=y;i++)
		{
			if(cdp[i]<cdp[i-1]||wan[n][cdp[i]]==0)
			{
				return 0;
			}
		}
		cplx2=6;
	}
	else if(y>=6&&y%2==0)
	{
		int hhh=0;
		for(int i=1;i<=y;i+=2)
		{
			if(cdp[i]!=cdp[i+1]||wan[n][cdp[i]]>2||(cdp[i]>cdp[i+2]&&cdp[i+2]>0))
			{
				break;
			}
			hhh+=1;
		}
		if(hhh==y/2)
		{
			cplx2=7;
		}
	}
	
	else
	{
		return 0;
	}
	if(cplx==0)
	{
		cplx=cplx2;
	}	
	if(cplx2==5)
	{
		if(cplx!=5)
		{
			chup[0]=4;
			for(int xx=1;xx<=y;xx++)
			{
				chup[xx]=cdp[xx];
				wan[n][cdp[xx]]-=1;
			} 
			wan[n][0]-=y;
			//cout<
		}
	}
	else if(cplx2>0)	
	{//cout<
		if(chup[0]==0)
		{
			chup[0]=y;
			//cout<<"ok"<
			for(int xx=1;xx<=y;xx++)
			{
				chup[xx]=cdp[xx];
				wan[n][cdp[xx]]-=1;
			} 
			//cout<
			wan[n][0]-=y;
			return 1;   
		}    
		else if(cplx==1&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[1]=cdp[1];
				chup[0]=1;
				wan[n][cdp[1]]-=1;
				//cout<
				wan[n][0]-=y;
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==2&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[1]=cdp[1];
				chup[2]=cdp[2];
				chup[0]=2;
				wan[n][cdp[1]]-=1;
				wan[n][cdp[2]]-=1;
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==3&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[0]=y;
				for(int xx=1;xx<=y;xx++)
				{
					chup[xx]=cdp[xx];
					wan[n][cdp[xx]]-=1;
				}
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==4&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[0]=y;
				for(int xx=1;xx<=y;xx++)
				{
					chup[xx]=cdp[xx];
					wan[n][cdp[xx]]-=1;
				}
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==5&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[0]=y;
				for(int xx=1;xx<=y;xx++)
				{
					chup[xx]=cdp[xx];
					wan[n][cdp[xx]]-=1;
				}
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==6&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[0]=y;
				for(int xx=1;xx<=y;xx++)
				{
					chup[xx]=cdp[xx];
					wan[n][cdp[xx]]-=1;
				}
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==7&&cplx==cplx2)
		{
			if(chup[1]<cdp[1])
			{
				chup[0]=y;
				for(int xx=1;xx<=y;xx++)
				{
					chup[xx]=cdp[xx];
					wan[n][cdp[xx]]-=1;
				}
				wan[n][0]-=y;//cout<
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(cplx==8&&cplx==cplx2)
		{
			wan[n][16]=0;
			wan[n][17]=0;
			chup[0]=0;
			wan[n][0]-=y;//cout<
			return 1;
		}
		else 
		{
			return 0;
		}
	}
	else 
	{
		return 0;
	}
}

int shuru(int n)
{
	if(sywjcp==0)
	{
		sywjcp=1;
	}
	else
	{
		cout<<"上一玩家出牌:";
		if(chup[0]==0)
		{
			cout<<"无"<<endl;
		}
		else
		{
			for(int xx=1;xx<=chup[0];xx++)
			{
				if(chup[xx]==8)
				{
					cout<<"T ";
				}
				else if(chup[xx]==9)
				{
					cout<<"J ";
				}
				else if(chup[xx]==10)
				{
					cout<<"Q ";
				}
				else if(chup[xx]==11)
				{
					cout<<"K ";
				}
				else if(chup[xx]==12)
				{
					cout<<"A ";
				}
				else if(chup[xx]==13)
				{
					cout<<"2 ";
				}
				else if(chup[xx]==14)
				{
					cout<<"w ";
				}
				else if(chup[xx]==15)
				{
					cout<<"W ";
				}
				else 
				{
					cout<<chup[xx]+2<<' ';
				}	
			}
		}
	}
	cout<<endl;
	cout<<"<<"<<n<<"号>>"<<endl;
	sleep(1);
	cout<<"你有(长按空格键2s查看牌):";
	sleep(1);
	for(int suo=1;suo<=10;suo++)
	{
		key();
		usleep(10000);
	} 
	sleep(1);
	shuchupai(n);
	sleep(2);
	cout<<endl<<n<<"号玩家出牌!!!\n(每张牌用','分割;字母使用大写;大王/小王/10分别用W/w/T表示;0表示要不起):";
	cin>>shu;
	cout<<"确定???【1:确认;0:取消】:";
	int yn,ybqxl=0;
	cin>>yn;
	if(yn==1)
	{
		if(shu[0]=='0')
		{
			ybqxl+=1;
		}
		if(ybqxl==wjs-1)
		{
			chup[0]=0;
			cplx=0;
			ybqxl=0;
		}
		yn=sfhf(n);
		if(yn!=0)
		{
			cout<<"\n\n\n\n\n<";
			for(int  dd=1;dd<=40;dd++)
			{
				usleep(25000);
				cout<<"->";
			}
			cout<<"\n[按下空格继续]";
			key();
			system("cls");
			return 1;
		}
		else
		{
			system("cls");
			cout<<"输入不合法,请重新输入!!!"<<endl;
			return 0;
		}
	}
	else if(yn==0)
	{
		system("cls");
		cout<<"请重新输入!!!"<<endl;
		return 0;
	}
	else
	{
		system("cls");
		cout<<"输入不合法,请重新输入!!!"<<endl;
		return 0;
	}
}
void say(string a)
{
	int l=a.size();
	for(int i=0; i<l; i++)
	{
		cout<<a[i];
		Sleep(40);
	}
}
string speek="\n\n\n多人版扑克牌\n\n\nwangyuxuan1029出品...........\n\n若有bug,请在CSDN上联系我,名字:wangyuxuan1029\n\n如果出现卡顿,尝试从新运行,请谅解\n\n\n\n\n\n[按下空格继续]\n\n";
int main()
{
	srand(time(0));
	say(speek);
	key();
	cout<<"输入玩家人数:"; 
	cin>>wjs;
	fp(wjs);
	system("cls");
	for(int i=1;i<=4;i++)
	{
		cout<<"正在发牌!!!!";
		for(int j=1;j<=8;j++)
		{
			usleep(300000);
			cout<<'-';
		}
		system("cls");
	}
//	for(int i=1;i<=wjs;i++)
//	{
//		for(int j=1;j<=wan[i][0];j++)
//		{
//			cout<
//		}
//		cout<
//	}
	int cp=1;
	while(1)
	{
		cp+=shuru(cp);
		if(cp>wjs)
		{
			cp-=wjs;
		}
		if(wan[cp][0]==0)
		{
			system("cls");
			cout<<cp-1<<"号玩家获胜!!!!!!";
			sleep(2); 
			return 0;
		}
	}
}

你可能感兴趣的:(AtCoder,c++,开发语言)