33,321
社区成员




#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>
using namespace std;
#define random(x)(rand()%x)
class Brand_group
{
private:
int yue;//余额
int chouma;//筹码
string F[4];//花色
string B[13];//点数
int V[13];
public:
Brand_group()
{
int v[13] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
for (int i = 0;i < 13;i++)
{
V[i] = v[i];
}
string temp_arr[4] = {"heart","spade","club","diamond"};
memcpy(F,temp_arr,sizeof(temp_arr));
string temp_arr1[13] = {"A","2","3","4","5","6","7","8","9","1","J","Q","K"};
memcpy(B,temp_arr1,sizeof(temp_arr1));
}
Brand_group(string F[4], char B[13], int yue, int chouma);
int duiju(int yue,int chouma);//对局函数
void menu(int yue);//菜单
void panding(int a[5], int c[5],int t);//判定
};
Brand_group::Brand_group(string F[4], char B[13], int yue, int chouma)
{
this->yue = yue;
this->chouma = chouma;
for (int i = 0; i < 4; i++)
{
this->F[i] = F[i];
}
for (int k = 0; k < 13; k++)
{
this->B[i] = B[i];
}
}
void Brand_group::menu(int yue)
{
cout<<"您的余额:"<<yue<<endl;
cout<<"按1玩"<<endl;
cout<<"按2退"<<endl;
char choose;
choose = getch();
switch(choose)
{
case '1':system("cls");
duiju(yue,0);
break;
case '2':system("cls");
exit(0);
break;
}
}
void Brand_group:: panding(int a[5], int c[5],int t)
{
for(int i=0;i<5;i++)//先将排按大小排列
{
for(int j=i+1;j<5;j++)
{
if(a[j]<a[i])
{
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
int temp1;
temp1=c[i];
c[i]=c[j];
c[j]=temp1;
}
}
}
int k=1,m=1,h=1; //k记录第一组相等牌的个数,m记录第二组相等牌的个数,h记录相等牌的组数,i、j用于循环使用
for(int j=0;j<4;i++)
{
if(k==1)
{
for(int p=i+1;p<5;p++)
{
if(B[i]==B[p])
k=k+1;
}
}
else
{
for(int o=i+1;o<5;o++)
{
if(B[i]==B[o]&&B[i]!=B[i-1])
{h=2;m=m+1;}
}
}
}
int n=1; //标记“对子三条铁支二对葫芦与非以上五种情况”
if (h==1)
{for(i=1;i<k;i++)n=n+1;}
if(h==2)
{
if(m!=3&&k!=3)
n=n+4;
if(m==3||k==3)
n=n+5;
}
switch(n)
{
case 1:break;
case 2:t=2;printf("对子\n");break;
case 3:t=4;printf("三条\n");break;
case 4:t=8;printf("铁支\n");break;
case 5:t=3;printf("二对\n");break;
case 6:t=7;printf("葫芦\n");break;
}
if(n==1)
{
for(i=0;i<4;i++)
{
int j=i+1;
if(V[i]-V[j]==-1&&i==3)
{
if(F[0]==F[1]&&F[1]==F[2]&&F[2]==F[3]&&F[3]==F[4])
{t=9;printf("同花顺\n");break;}
else
{t=5;printf("顺子\n");break;}
}
if(V[i]-V[j]!=-1)
{
if(F[0]==F[1]&&F[1]==F[2]&&F[2]==F[3]&&F[3]==F[4])
{t=6;printf("同花\n");break;}
else
{t=1;printf("散牌\n");break;}
}
else
continue;
}
}
}
int Brand_group::duiju(int yue,int chouma)
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int play_a[2];//存玩家手上的两张牌的花色
int play_b[2];//两张牌的点数
int boot1_a[2];//存机器人的
int boot1_b[2];
int boot2_a[2];
int boot2_b[2];
int boot3_a[2];
int boot3_b[2];
int pub_a[3];
int pub_b[3];
play_a[0] = random(3);
play_b[0] = random(12);
boot1_a[0] = random(3);
boot1_b[0] = random(12);
boot2_a[0] = random(3);
boot2_b[0] = random(12);
boot3_a[0] = random(3);
boot3_b[0] = random(12);
play_a[1] = random(3);
play_b[1] = random(12);
boot1_a[1] = random(3);
boot1_b[1] = random(12);
boot2_a[1] = random(3);
boot2_b[1] = random(12);
boot3_a[1] = random(3);
boot3_b[1] = random(12);
cout<<"输入你的筹码:"<<chouma<<endl;
cin>>chouma;
if (yue < chouma)
{
cout<<"您的的余额不足!"<<endl;
system("cls");
return 0;
}
cout<<"你的明牌为:"<<F[play_a[0]]<<B[play_b[0]]<<endl;
cout<<"你的暗牌为:"<<F[play_a[1]]<<B[play_b[1]]<<endl;
cout<<"甲的明牌为:"<<F[boot1_a[0]]<<B[boot1_b[0]]<<endl;
cout<<"乙的明牌为:"<<F[boot2_a[0]]<<B[boot2_b[0]]<<endl;
cout<<"丙的明牌为:"<<F[boot3_a[0]]<<B[boot3_b[0]]<<endl;
cout<<"是否继续?"<<endl;
cout<<"按1继续"<<endl;
cout<<"按2弃牌"<<endl;
char choose;
choose = getch();
switch(choose)
{
case '1':system("cls");
break;
case '2':system("cls");
cout<<"游戏结束!"<<endl;
return 0;
break;
}
pub_a[0] = random(3);
pub_b[0] = random(12);
cout<<"明牌1为:"<<F[pub_a[0]]<<B[pub_b[0]]<<endl;
cout<<"是否继续?"<<endl;
cout<<"按1继续"<<endl;
cout<<"按2弃牌"<<endl;
char choose1;
choose1 = getch();
switch(choose1)
{
case '1':system("cls");
break;
case '2':system("cls");
cout<<"游戏结束!"<<endl;
return 0;
break;
}
pub_a[1] = random(3);
pub_b[1] = random(12);
cout<<"明牌1为:"<<F[pub_a[1]]<<B[pub_b[1]]<<endl;
cout<<"是否继续?"<<endl;
cout<<"按1继续"<<endl;
cout<<"按2弃牌"<<endl;
char choose2;
choose2 = getch();
switch(choose2)
{
case '1':system("cls");
break;
case '2':system("cls");
cout<<"游戏结束!"<<endl;
return 0;
break;
}
pub_a[2] = random(3);
pub_b[2] = random(12);
cout<<"明牌1为:"<<F[pub_a[2]]<<B[pub_b[2]]<<endl;
cout<<"是否继续?"<<endl;
cout<<"按1继续"<<endl;
cout<<"按2弃牌"<<endl;
char choose3;
choose3 = getch();
switch(choose3)
{
case '1':system("cls");
break;
case '2':system("cls");
cout<<"游戏结束!"<<endl;
return 0;
break;
}
cout<<"请大家亮牌!"<<endl;
cout<<"你:"<<F[play_a[0]]<<B[play_b[0]]<<" "<<F[play_a[1]]<<B[play_b[1]]<<" "<<B[pub_a[0]]<<F[pub_b[0]]<<" "<<B[pub_a[1]]<<F[pub_b[1]]<<" "<<B[pub_a[2]]<<F[pub_b[2]]<<endl;
cout<<"甲:"<<F[boot1_a[0]]<<B[boot1_b[0]]<<" "<<F[boot1_a[1]]<<B[boot1_b[1]]<<" "<<B[pub_a[0]]<<F[pub_b[0]]<<" "<<B[pub_a[1]]<<F[pub_b[1]]<<" "<<B[pub_a[2]]<<F[pub_b[2]]<<endl;
cout<<"乙:"<<F[boot2_a[0]]<<B[boot2_b[0]]<<" "<<F[boot2_a[1]]<<B[boot2_b[1]]<<" "<<B[pub_a[0]]<<F[pub_b[0]]<<" "<<B[pub_a[1]]<<F[pub_b[1]]<<" "<<B[pub_a[2]]<<F[pub_b[2]]<<endl;
cout<<"丙:"<<F[boot3_a[0]]<<B[boot3_b[0]]<<" "<<F[boot3_a[1]]<<B[boot3_b[1]]<<" "<<B[pub_a[0]]<<F[pub_b[0]]<<" "<<B[pub_a[1]]<<F[pub_b[1]]<<" "<<B[pub_a[2]]<<F[pub_b[2]]<<endl;
int playA[5] = {play_a[0], play_a[1],pub_a[0],pub_a[1],pub_a[2]};
int playB[5] = {play_b[0], play_b[1],pub_b[0],pub_b[1],pub_b[2]};
int boot1A[5] = {boot1_a[0], boot1_a[1],pub_a[0],pub_a[1],pub_a[2]};
int boot1B[5] = {boot1_b[0], boot1_b[1],pub_b[0],pub_b[1],pub_b[2]};
int boot2A[5] = {boot2_a[0], boot2_a[1],pub_a[0],pub_a[1],pub_a[2]};
int boot2B[5] = {boot2_b[0], boot2_b[1],pub_b[0],pub_b[1],pub_b[2]};
int boot3A[5] = {boot3_a[0], boot3_a[1],pub_a[0],pub_a[1],pub_a[2]};
int boot3B[5] = {boot3_b[0], boot3_b[1],pub_b[0],pub_b[1],pub_b[2]};
panding(playA,playB,a);
panding(boot1A,boot1B,b);
panding(boot2A,boot2B,c);
panding(boot3A,boot3B,d);
if (a > b)
{
if (a > c)
{
if (a > d)
{
cout <<"你赢了!"<<endl;
yue = yue + chouma;
return 0;
}
}
}
else
{
cout<<"你输了!"<<endl;
yue = yue - chouma;
}
return 0;
}
int main()
{
Brand_group b;
b.menu(100);
return 0;
}