此为第一版,需要多个人玩,之后更新单人版。
蒟蒻小游戏,大佬勿喷
#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;
}
}
}