#include <bits/stdc++.h>
using namespace std;
//一堆注释 
int shenfen;
int niepan;//庞统 
int sijie;//审配 
int haoqiang;//袁绍 
int jianxiong;//曹操 
int weidi=14;//袁术 
int jianshou;//曹仁 
int huben;//许褚 
int wzshenyou;//无中生有 
struct pai//结构体:牌 
{
    int paifu;
    int huase;
    int yanse;
    int dianshu;
    int leixing;
    int changdu;
    void Kanpai()
    {
        if(paifu==0||paifu==1);
        else
        {
            printf("牌副参数错误!\n");
        }
        switch(huase)
        {
            case 0:cout<<"黑桃";break;
            case 1:cout<<"红桃";break;
            case 2:cout<<"草花";break;
            case 3:cout<<"方片";break;
            case -1:cout<<"无色";break;
            default:printf("花色错误!\n");break;
        }
        switch(dianshu)
        {
            case 0:cout<<"A ";break;
            case 1:cout<<"2 ";break;
            case 2:cout<<"3 ";break;
            case 3:cout<<"4 ";break;
            case 4:cout<<"5 ";break;
            case 5:cout<<"6 ";break;
            case 6:cout<<"7 ";break;
            case 7:cout<<"8 ";break;
            case 8:cout<<"9 ";break;
            case 9:cout<<"10 ";break;
            case 10:cout<<"J ";break;
            case 11:cout<<"Q ";break;
            case 12:cout<<"K ";break;
            case -1:cout<<"无点数";break;
            default:printf("点数错误!\n");break;
        }
        switch(leixing)
        {
            case 101:cout<<"【杀】"<<endl;break;
            case 102:cout<<"【闪】"<<endl;break;
            case 103:cout<<"【桃】"<<endl;break;
            case 201:cout<<"【过河拆桥】"<<endl;break;
            case 202:cout<<"【顺手牵羊】"<<endl;break;
            case 203:cout<<"【无中生有】"<<endl;break;
            case 204:cout<<"【决斗】"<<endl;break;
            case 205:cout<<"【借刀杀人】"<<endl;break;
            case 206:cout<<"【桃园结义】"<<endl;break;
            case 207:cout<<"【五谷丰登】"<<endl;break;
            case 208:cout<<"【南蛮入侵】"<<endl;break;
            case 209:cout<<"【万箭齐发】"<<endl;break;
            case 210:cout<<"【无懈可击】"<<endl;break;
            case 251:cout<<"【乐不思蜀】"<<endl;break;
            case 252:cout<<"【闪电】"<<endl;break;
            case 301:cout<<"【诸葛连弩(1)】"<<endl;break;
            case 302:cout<<"【雌雄双股剑(2)】"<<endl;break;
            case 303:cout<<"【青釭剑(2)】"<<endl;break;
            case 304:cout<<"【青龙偃月刀(3)】"<<endl;break;
            case 305:cout<<"【丈八蛇矛(3)】"<<endl;break;
            case 306:cout<<"【贯石斧(3)】"<<endl;break;
            case 307:cout<<"【方天画戟(4)】"<<endl;break;
            case 308:cout<<"【麒麟弓(5)】"<<endl;break;
            case 331:cout<<"【八卦阵】"<<endl;break;
            case 361:cout<<"【赤兔(-1)】"<<endl;break;
            case 362:cout<<"【大宛(-1)】"<<endl;break;
            case 363:cout<<"【紫辛(-1)】"<<endl;break;
            case 381:cout<<"【爪黄飞电(+1)】"<<endl;break;
            case 382:cout<<"【的卢(+1)】"<<endl;break;
            case 383:cout<<"【绝影(+1)】"<<endl;break;
            default:printf("类型参数错误!");break;
        }
    }
};
void Qishixipai(pai A[2][4][13],pai paidui[104])//起始洗牌 
{
    int i,m,x,y,z,a[104]={0};//初始化为0 
    srand((unsigned)time(NULL));//随机数 
    for(i=1;i<=104;i++)
    {
        while(a[m=rand()%104]);
        {
            a[m]=i;
        }
    }
    for(i=0;i<=103;i++) 
    {
        x=(a[i]-1)/52;
        y=((a[i]-1)-52*x)/13;
        z=(a[i]-1)%13;
        paidui[i]=A[x][y][z];
    }
}
void Xipai(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//洗牌 
{
    int i,m,a[104]={0};
    srand((unsigned)time(NULL));
    for(i=1;i<=(*qipaishu);i++)
    {
        while(a[m=rand()%(*qipaishu)]);
        a[m]=i;
    }
    for(i=0;i<=((*qipaishu)-1);i++)
    {
        paidui[i]=qipaidui[a[i]];
        qipaidui[a[i]].leixing=-1;
        (*paiduishu)++;
        (*qipaishu)--;
    }
    for(i=(*paiduishu);i<=103;i++)
    {
        paidui[i].leixing=-1;
    }
}
pai Mo1pai(pai A[104],int *x,pai B[104],int*y,int *b)//摸牌错误 
{
    pai p;
    if((*x)==0)
    {
        Xipai(A,x,B,y);
    }
    else if((*x)<0)
    {
        printf("摸牌参数错误!");
    }
    else;
    p=A[104-(*x)];
    (*x)--;
    (*b)++;
    return(p);
}
struct wujiang//观看手牌,装备牌,判定牌 
{
    char name;
    int tili;
    int tilishangxian;
    int shoupaishangxian;
    int huihekaishi;
    int panding;
    int mopai;
    int chupai;
    int qipai;
    int huihejieshu;
    int juese;
    pai shoupai[20];
    int shoupaishu;
    pai zhuangbei[4];
    int zhuangbeishu;
    pai pandingpai[3];
    int pandingshu;
    int juli[1];
    void Kanshoupai()//让玩家观看手牌 
    {
        printf("玩家当前手牌:\n");
        if(shoupaishu)
        {
            int m;
            for(m=0;m<=(shoupaishu-1);m++)
            {
                printf("%d ",m);
                (shoupai[m]).Kanpai();
            }
        }
        else 
        {
            printf("空城!\n");
        }
        printf("\n");//细致!!! 
    }
    void Kanzhuangbei()//让玩家观看装备 
    {
        if(juese)printf("玩家");
        else printf("电脑");
        printf("当前装备:\n");
        ///
        printf("0 武器: ");
        if((zhuangbei[0]).leixing==-1)printf("空\n");
        else (zhuangbei[0]).Kanpai();
        //
        printf("1 防具: ");
        if((zhuangbei[1]).leixing==-1)printf("空\n");
        else (zhuangbei[1]).Kanpai();
        //
        printf("2 进攻马: ");
        if((zhuangbei[2]).leixing==-1)printf("空\n");
        else (zhuangbei[2]).Kanpai();
        /
        printf("3 防御马: ");
        if((zhuangbei[3]).leixing==-1)printf("空\n");
        else (zhuangbei[3]).Kanpai();
        printf("\n");
    }
    void Kanpandingpai()//让玩家观看判定牌 
    {
        if(juese)printf("玩家");
        else printf("电脑");
        printf("当前判定区:\n");
        if((pandingpai[0]).leixing==-1)printf("空\n");
        else
        {
            printf("0 ");
            (pandingpai[0]).Kanpai();
            if((pandingpai[1]).leixing==-1);
            else
            {
                printf("1 ");
                (pandingpai[1]).Kanpai();
                if((pandingpai[2]).leixing==-1);
                else
                {
                    printf("2 ");
                    (pandingpai[2]).Kanpai();
                }
            }
        }
    }
}u;
void Mopai(int*shoupaishu,pai shoupai[20],pai A[104],int *x,pai B[104],int*y,int juese)//摸牌 
{
    if(juese)
    {
        if(shenfen==7&&wzshenyou==0)
        {
            cout<<"是否发动许褚锁定技——虎贲(少摸一张牌,杀与决斗伤害+1)\n";
            cout<<"是,按1\n";
            int x;
            cin>>x;
            if(x==1)
            {
                huben=1;
                printf("恭喜你获得许褚锁定技——虎贲(少摸一张牌,杀与决斗伤害+1)\n"); 
            } 
        } 
        else
        {
            printf("玩家从牌堆摸2张牌\n");
        }
        if(shenfen==3&&wzshenyou==0)
        {
            printf("触发周瑜锁定技——英姿\n");
            pai g;
            g=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=g;
        }
        if(shenfen==10&&wzshenyou==0)
        {
            printf("触发袁绍锁定技——2.结交豪强(可以多出一张杀,多摸一张牌)\n");
            pai g;
            g=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=g;
        }
        if(shenfen==9&&sijie==1&&wzshenyou==0)
        {
            sijie=0;
            cout<<"触发审配锁定技——死节\n";
            pai g,s,t;
            g=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=g;
            s=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=s;
            t=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=t;
        }
        if(shenfen==5&&wzshenyou==0)
        {
            int aw; 
            srand((unsigned)time(NULL));
            aw=rand()%10;
            if(aw%2==1)
            {
                 printf("触发曹操锁定技——屯田(摸牌时随机判定,若是奇数摸三张牌,偶数摸两张牌)\n");
                 cout<<"判定结果为奇数,多摸一张牌\n";
                 pai g; 
                 g=Mo1pai(A,x,B,y,shoupaishu);
                 shoupai[*shoupaishu-1]=g;
            }
            else
            {
                printf("触发曹操锁定技——屯田(摸牌时随机判定,若是奇数摸三张牌,偶数摸两张牌)\n");
                 cout<<"判定结果为偶数\n";
            }
            if(jianxiong>=2)
            {
                int a=jianxiong/2;
                printf("触发曹操锁定技——奸雄\n");
                printf("你摸了%d张牌\n",a);
                for(int i=1;i<=a;i++)
                {
                     pai g; 
                     g=Mo1pai(A,x,B,y,shoupaishu);
                     shoupai[*shoupaishu-1]=g;
                }
                jianxiong=jianxiong-2*a;
            }
            else
            {
                printf("无法触发曹操锁定技——奸雄\n");
            }
        }
        if(shenfen==11&&wzshenyou==0)
        {
            printf("触发袁术锁定技——伪帝(开局多摸14张牌,然后每回合依次递减2(到0为止))\n");
            for(int i=1;i<=weidi;i++)
            {
                 pai g; 
                 g=Mo1pai(A,x,B,y,shoupaishu);
                 shoupai[*shoupaishu-1]=g;
            } 
            printf("你摸了%d张牌\n",weidi);
            if(weidi>0)
            {
                weidi-=2;
            }
        }
        if(shenfen==7&&huben==1&&wzshenyou==0)
        {
            pai p;
            p=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=p;
        }
        else
        {
            pai p;
            p=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=p;
            pai q;
            q=Mo1pai(A,x,B,y,shoupaishu);
            shoupai[*shoupaishu-1]=q;
        }
    }
    else 
    {
        printf("电脑从牌堆摸2张牌\n");
        pai p;
        p=Mo1pai(A,x,B,y,shoupaishu);
        shoupai[*shoupaishu-1]=p;
        pai q;
        q=Mo1pai(A,x,B,y,shoupaishu);
        shoupai[*shoupaishu-1]=q;
    } 
    if(shenfen==2&&niepan==1)
    {
        printf("触发庞统限定技——涅槃\n");
        niepan=3;
        pai g,s,t;
        g=Mo1pai(A,x,B,y,shoupaishu);
        shoupai[*shoupaishu-1]=g;
        s=Mo1pai(A,x,B,y,shoupaishu);
        shoupai[*shoupaishu-1]=s;
        t=Mo1pai(A,x,B,y,shoupaishu);
        shoupai[*shoupaishu-1]=t;
    } 
    int m;
    if(juese)//让玩家观看手牌(电脑不需要) 
    {
        printf("玩家当前手牌:\n");
        for(m=0;m<=(*shoupaishu-1);m++)
        {
            printf("%d ",m);
            (shoupai[m]).Kanpai();
        }
    }
    printf("牌堆还剩%d张牌!\n\n",*x);
}
void Qishishoupai(wujiang *w,pai A[104],int *x,pai B[104],int*y)//起始摸牌 
{
    /*for(int i=1;i<=3;i++)
    {*/
        pai a;
        a=Mo1pai(A,x,B,y,&((*w).shoupaishu));
        (*w).shoupai[(*w).shoupaishu-1]=a;
        pai b;
        b=Mo1pai(A,x,B,y,&((*w).shoupaishu));
        (*w).shoupai[(*w).shoupaishu-1]=b;
        pai c;
        c=Mo1pai(A,x,B,y,&((*w).shoupaishu));
        (*w).shoupai[(*w).shoupaishu-1]=c;
        pai d;
        d=Mo1pai(A,x,B,y,&((*w).shoupaishu));
        (*w).shoupai[(*w).shoupaishu-1]=d;
    //}
    int m;
    if((*w).juese)
    {
        printf("玩家从牌堆摸4张牌\n");
        if(shenfen==10)
        {
            printf("触发袁绍限定技——1.四世三公(开局多摸七张牌)\n");
            for(int i=1;i<=7;i++)
            {
                    pai a;
                    a=Mo1pai(A,x,B,y,&((*w).shoupaishu));
                    (*w).shoupai[(*w).shoupaishu-1]=a;
             } 
        } 
    }
    else 
    {
        printf("电脑从牌堆摸4张牌\n");
    }
    if((*w).juese)
    {
        printf("玩家当前手牌:\n");
        for(m=0;m<=((*w).shoupaishu-1);m++)
        {
            printf("%d ",m);
            ((*w).shoupai[m]).Kanpai();
        }
    }
    printf("牌堆还剩%d张牌!\n\n",*x);
}
void Panding(pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//判定 
{
    paidui[*paiduishu].Kanpai();
    qipaidui[*qipaishu]=paidui[*paiduishu];
    (*paiduishu)--;
    (*qipaishu)++;
}
pai Zhangba(wujiang*w,pai qipaidui[104],int*qipaishu)//丈八蛇矛 
{
    int x,y;
    pai p;
    for(;;)
    {
    int i,j;
    printf("请输入任意两张手牌之前的编号,以空格隔开,以回车结束!\n");
    scanf("%d",&x);
    scanf("%d",&y);
    if((x>=0)&&(x<(*w).shoupaishu)&&(y>=0)&&(y<(*w).shoupaishu-1))
    {
    switch((((*w).shoupai[x].huase)%2)+(((*w).shoupai[y].huase)%2))
    {
    case 0:p.yanse=0;break;
    case 2:p.yanse=1;break;
    case 1:p.yanse=2;break;
    default:printf("【丈八蛇矛】函数参数错误!\n");
    }
    qipaidui[*qipaishu]=(*w).shoupai[x];
    (*w).shoupai[x].leixing=-1;
    ((*w).shoupaishu)--;
    (*qipaishu)++;
    qipaidui[*qipaishu]=(*w).shoupai[y];
    (*w).shoupai[y].leixing=-1;
    ((*w).shoupaishu)--;
    (*qipaishu)++; printf("弃牌数:%d",*qipaishu);
    for(i=0;i<=(((*w).shoupaishu)+1);i++)
    {
    if((*w).shoupai[i].leixing==-1)
    {
    for(j=i+1;j<=(((*w).shoupaishu)+2);j++)
    (*w).shoupai[j-1]=(*w).shoupai[j];
    i--;
    }
    }
    printf("玩家把:\n");
    qipaidui[(*qipaishu)-2].Kanpai();
    qipaidui[(*qipaishu)-1].Kanpai();
    printf("当作一张");
    switch(p.yanse)
    {
        case 0:printf("黑色");break;
        case 2:printf("红色");break;
        case 1:printf("无色");break;
        default:printf("绿色");break;
        }
        printf("无点数的【杀】");
        p.dianshu=-1;
        p.leixing=101;
        return p;
        break;
    }
    printf("你将两张空气当作一张空气属性的【杀】使用或打出!\n");
    }
}
int Xuanpai(wujiang*w,int t)//出牌 
{
    int x;
    if((*w).juese)
    {
        for(;;)
        {
            printf("出牌请输入手牌之前的编号,以回车结束!\n如果你想结束出牌阶段,请输入“-1”,以回车结束!\n");
            scanf("%d",&x);
            if((x>=-1&&x<((*w).shoupaishu))||((x==100)&&((*w).zhuangbei[0].leixing==305)))
            {
                return x;
                break;
            }
            printf("你打出了一张空气!\n");
        }
    }
    else return t;
}
pai Panpai(wujiang*w1,int*sha,int y,pai qipaidui[104],int*qipaishu)//判定是否能使用杀,闪,桃,无懈可击 
{
    pai p,q;
    p.leixing=0;
    q.leixing=-1;
    if(y==-1)return q;
    else
    {
    if(y==100)
    {
    if((*sha)>0)
    {
    q=Zhangba(w1,qipaidui,qipaishu);
    printf("使用!\n");
    return q;
    }
    else
    {
    printf("当前回合使用【杀】的次数已用尽,你也不能使用【丈八蛇矛】效果!\n");
    return p;
    }
    }
    switch((*w1).shoupai[y].leixing)
    {
    case 101:
    if(((*sha)>0)||((*w1).zhuangbei[0].leixing==301))
    {
    if(((*w1).zhuangbei[0].leixing==301))printf("武器【诸葛连弩】效果被触发!\n");
    return (*w1).shoupai[y];
    break;
    }
    else if(shenfen==1)
    {
        printf("张飞锁定技——咆哮触发\n");
        return (*w1).shoupai[y];
        break;    
    }
    else if(shenfen==10&&haoqiang==0)
    {
        haoqiang=1;
        printf("触发袁绍锁定技——2.结交豪强(可以多出一张杀,多摸一张牌)\n");
        return (*w1).shoupai[y];
        break;    
    } 
    else
    {
    if((*w1).juese)
    printf("当前回合使用【杀】的次数已用尽,你不能使用【杀】!\n");
    return p;break;
    }
    case 102:
    if((*w1).juese)
    printf("当前不需要响应任何操作,你不能主动打出【闪】!(你闪谁呢!!!)\n");
    return p;break;
    case 103:
    if(((*w1).tili)<((*w1).tilishangxian))
    {
    return (*w1).shoupai[y];
    break;
    }
    else
    {
    if((*w1).juese)
    printf("你并未受伤,不能对自己使用【桃】!(奶够啦啊!!!)\n");
    }
    return p;break;
    case 210:
    if((*w1).juese)
    printf("当前不需要响应任何锦囊,你不能主动打出【无懈可击】!\n");
    return p;break;
    case 201:
    case 202:
    case 203:
    case 204:
    case 205:
    case 206:
    case 207:
    case 208:
    case 209:
    case 251:
    case 252:
    case 301:
    case 302:
    case 303:
    case 304:
    case 305:
    case 306:
    case 307:
    case 308:
    case 331:
    case 361:
    case 362:
    case 363:
    case 381:
    case 382:
    case 383:return (*w1).shoupai[y];break;
    default:printf("手牌类型参数错误!(游戏要崩啦)\n");return p;break;
    }
    }
}
int Mubiao(pai p,wujiang *w1,wujiang *w2,int*sha)//牌的目标 
{
    int x;
    switch(p.leixing)
    {
    case 101:
    if((*w1).juese)
    {
    printf("请选择【杀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x==0)
    {
    if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
    {
    (*sha)--;
    return((*w2).juese);
    }
    else
    {
    printf("武器长度不够!\n");
    return -2;
    }
    }
    else
    {
    printf("目标错误!\n");
    return -2;
    }
    }
    else
    {
    if((*w1).zhuangbei[0].changdu>=(*w1).juli[0])
    {
    (*sha)--;
    return((*w2).juese);
    }
    else return -2;
    }
    break;
    case 103:return((*w1).juese);break;
    case 201:
    if((*w1).juese)
    {
    printf("请选择【过河拆桥】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x==0)
    {
    if((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)return((*w2).juese);
    else
    {
    printf("目标没有牌!\n");
    return -2;
    }
    }
    else
    {
    printf("目标错误!\n");
    return -2;
    }
    }
    else return((*w2).juese);
    break;
    case 202:
    if((*w1).juese)
    {
    printf("请选择【顺手牵羊】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x==0)
    {
    if(((*w2).shoupaishu||(*w2).zhuangbeishu||(*w2).pandingshu)&&((*w1).juli[0]<=1))return((*w2).juese);
    else
    {
    printf("目标没有牌!\n");
    return -2;
    }
    }
    else
    {
    printf("目标错误!\n");
    return -2;
    }
    }
    else
    {
    if((*w1).juli[0]<=1)return((*w2).juese);
    else return -2;
    }
    break;
    case 203:
    return((*w1).juese);break;
    case 204:
    if((*w1).juese)
    {
    printf("请选择【决斗】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x==0)return((*w2).juese);
    else
    {
    printf("目标错误!\n");
    return -2;
    }
    }
    else return((*w2).juese);
    break;
    case 205:
    int y;
    if((*w1).juese)
    {
    printf("请选择【借刀杀人】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x!=0)
    {
    printf("目标错误!\n");
    return -2;
    }
    else
    {
    if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)
    {
    printf("目标装备区里没有武器!\n");
    return -2;
    }
    else
    {
    printf("请选择【杀】的目标!\n提示:【杀】的目标必须在【借刀杀人】的目标的攻击范围之内!\n输入目标前的编号,以回车结束!\n0 玩家\n");
    scanf("%d",&y);
    if(y!=0)
    {
    printf("目标错误!\n");
    return -2;
    }
    else
    {
    if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])
    {
    printf("武器距离不够!\n");
    return -2;
    }
    else
    return((*w2).juese);
    }
    }
    }
    }
    else
    {
    if(((*w2).zhuangbei[0]).leixing<=300||((*w2).zhuangbei[0]).leixing>=331)return -2;
    else
    {
    if(((*w2).zhuangbei[0].changdu)<(*w2).juli[0])return -2;
    else return((*w2).juese);
    }
    }
    break;
    case 206:
    case 207:return 99;break;
    case 208:
    case 209:return 100;break;
    case 251:
    if((*w1).juese)
    {
    printf("请选择【乐不思蜀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");
    scanf("%d",&x);
    if(x==0)
    {
    int i;
    for(i=0;i<=2;i++)
    {
    if((*w2).pandingpai[i].leixing==251)
    i=-1;
    break;
    }
    if(i==-1)
    {
    printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
    return -2;
    }
    else return((*w2).juese);
    }
    else
    {
    printf("目标错误!(看准点!!!)\n");
    return -2;
    }
    }
    else
    {
    int i;
    for(i=0;i<=2;i++)
    {
    if((*w2).pandingpai[i].leixing==251)
    i=-1;
    break;
    }
    if(i==-1)return -2;
    else return((*w2).juese);
    }
    break;
    case 252:
    int i;
    for(i=0;i<=2;i++)
    {
    if((*w1).pandingpai[i].leixing==252)
    i=-1;
    break;
    }
    if(i==-1)
    {
    if((*w1).juese)printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");
    return -2;
    }
    else return ((*w1).juese);
    break;
    case 301:
    case 302:
    case 303:
    case 304:
    case 305:
    case 306:
    case 307:
    case 308:
    case 331:
    case 361:
    case 362:
    case 363:
    case 381:
    case 382:
    case 383:return((*w1).juese);break;
    default:return -2;break;
    }
}
void Da1pai(wujiang *w1,wujiang*w2,pai qipaidui[104],int *qipaishu,int x)//重要环节:打牌 
{
    int i;
    if((x<0||x>=((*w1).shoupaishu))&&x!=100)
    printf("你的牌呢?!\n");
    else
    {
    switch(((*w1).shoupai)[x].leixing)
    {
    case 101:
    case 102:
    case 103:
    case 201:
    case 202:
    case 203:
    case 204:
    case 205:
    case 206:
    case 207:
    case 208:
    case 209:
    case 210:
    qipaidui[*qipaishu]=((*w1).shoupai)[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    (*qipaishu)++;
    break;
    case 251:
    for(i=1;i>=0;i--)(*w2).pandingpai[i+1]=(*w2).pandingpai[i];
    (*w2).pandingpai[0]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    ((*w2).pandingshu)++;
    break;
    case 252:
    for(i=1;i>=0;i--)(*w1).pandingpai[i+1]=(*w1).pandingpai[i];
    (*w1).pandingpai[0]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    ((*w1).pandingshu)++;
    break;
    case 301:
    case 302:
    case 303:
    case 304:
    case 305:
    case 306:
    case 307:
    case 308:
    if((*w1).zhuangbei[0].leixing==-1)((*w1).zhuangbeishu)++;
    else
    {
    qipaidui[*qipaishu]=((*w1).zhuangbei)[0];
    (*qipaishu)++;
    }
    (*w1).zhuangbei[0]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    break;
    case 331:
    if((*w1).zhuangbei[1].leixing==-1)((*w1).zhuangbeishu)++;
    else
    {
    qipaidui[*qipaishu]=((*w1).zhuangbei)[1];
    (*qipaishu)++;
    }
    (*w1).zhuangbei[1]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    break;
    case 361:
    case 362:
    case 363:
    if((*w1).zhuangbei[2].leixing==-1)((*w1).zhuangbeishu)++;
    else
    {
    qipaidui[*qipaishu]=((*w1).zhuangbei)[2];
    (*qipaishu)++;
    }
    (*w1).zhuangbei[2]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    break;
    case 381:
    case 382:
    case 383:
    if((*w1).zhuangbei[3].leixing==-1)((*w1).zhuangbeishu)++;
    else
    {
    qipaidui[*qipaishu]=((*w1).zhuangbei)[3];
    (*qipaishu)++;
    }
    (*w1).zhuangbei[3]=(*w1).shoupai[x];
    for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    break;
    default:break;
    }
    }
}
void Miaoshu(pai p,int juese,int duixiang)//对象(不是那个) 
{
    if(juese==0)printf("电脑");
    else if(juese==1)printf("玩家");
    else printf("角色参数错误!\n");
    if(p.leixing<=300&&p.leixing>100)
    {
    switch(duixiang)
    {
    case -1:printf("打出");break;
    case 0:printf("对电脑使用");break;
    case 1:printf("对玩家使用");break;
    case 99:printf("使用");break;
    case 100:printf("对所有人使用");break;
    default:printf("对象参数错误\n");break;
    }
    }
    else if(p.leixing>=301&&p.leixing<=400)
    printf("装备");
    else printf("你出的是什么东西?\n");
    p.Kanpai();
    if(!juese&&(p.leixing==101||p.leixing==204||p.leixing==205||p.leixing==207||p.leixing==208||p.leixing==209))printf("请响应!\n");
}
int Wuxie(pai *p,wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu,int a)//无懈可击 
{
    int x;
    if((*w1).juese)
    {
    printf("是否使用【无懈可击】响应?\n\n");
    for(;;)
    {
    (*w1).Kanshoupai();
    printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
    scanf("%d",&x);
    if(x==-1)
    {
    for(x=0;x<((*w2).shoupaishu);x++)
    {
    if((*w2).shoupai[x].leixing==210)
    {
    printf("电脑使用");
    ((*w2).shoupai)[x].Kanpai();
    printf("对象是");
    (*p).Kanpai();
    (*p)=((*w2).shoupai)[x];
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    a++;
    break;
    }
    }
    break;
    }
    else if((*w1).shoupai[x].leixing==210)
    {
    printf("玩家使用");
    ((*w1).shoupai)[x].Kanpai();
    printf("对象是");
    (*p).Kanpai();
    (*p)=((*w1).shoupai)[x];
    qipaidui[*qipaishu]=((*w1).shoupai)[x];
    for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
    ((*w1).shoupaishu)--;
    (*qipaishu)++;
    (*w1).Kanshoupai();
    a++;
    break;
    }
    else printf("你确定你使用的是【无懈可击】?\n");
    }
    }
    else
    {
    printf("是否使用【无懈可击】响应?\n");
    for(;;)
    {
    (*w2).Kanshoupai();
    printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");
    scanf("%d",&x);
    if(x==-1)break;
    else if((*w2).shoupai[x].leixing==210)
    {
    printf("玩家使用");
    ((*w2).shoupai)[x].Kanpai();
    printf("对象是");
    (*p).Kanpai();
    (*p)=((*w2).shoupai)[x];
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    (*w2).Kanshoupai();
    a++;
    break;
    }
    else printf("你确定你使用的是【无懈可击】?\n");
    }
    }
    return a;
}
int Qiutao(wujiang*w,pai qipaidui[104],int*qipaishu)//求桃 
{
    int x;
    if((*w).juese)
    {
    for(;;)
    {
    printf("如果要使用【桃】请输入手牌之前的编号,不需要请输入“-1”,以回车结束!\n");
    scanf("%d",&x);
    if(x==-1)
    {
    return -1;
    break;
    }
    else if((*w).shoupai[x].leixing==103)
    {
    qipaidui[*qipaishu]=((*w).shoupai)[x];
    for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
    ((*w).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    else printf("你确定你使用的是【桃】?\n");
    }
    }
    else
    {
    for(x=0;x<((*w).shoupaishu);x++)
    {
    if((*w).shoupai[x].leixing==103)
    {
    qipaidui[*qipaishu]=((*w).shoupai)[x];
    for(int i=x+1;i<=((*w).shoupaishu);i++)((*w).shoupai)[i-1]=((*w).shoupai)[i];
    ((*w).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    }
    return -1;
    }
}
int Binsi(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)//濒死 
{
    if(((*w2).tili)>0)return 0;
    else
    {
    int i;
    if((*w1).juese)
    {
    for(;;)
    {
    printf("电脑濒死,是否使用【桃】?\n");
    i=Qiutao(w1,qipaidui,qipaishu);
    if(i==0)((*w2).tili)++;
    if((i==-1)||((*w2).tili>0))break;
    }
    if((*w2).tili>0)return 0;
    else
    {
    for(;;)
    {
    i=Qiutao(w2,qipaidui,qipaishu);
    if(i==0)((*w2).tili)++;
    if((i==-1)||((*w2).tili>0))break;
    }
    if((*w2).tili>0)return 0;
    else return -1;
    }
    }
    else
    {
    for(;;)
    {
    printf("玩家濒死,是否使用【桃】?\n");
    i=Qiutao(w2,qipaidui,qipaishu);
    if(i==0)((*w2).tili)++;
    if(shenfen==2&&niepan!=1)
    {
        niepan=1;
        printf("触发庞统限定技——涅槃\n");
        printf("玩家生命+3\n");
        (*w2).tili+=3;
    }
    if(shenfen==9&&sijie==0)
    {
        sijie=1;
        printf("触发审配锁定技——死节\n");
        (*w2).tili-=1;
    } 
    if(shenfen==10)
    {
        printf("触发袁绍锁定技——骄纵\n");
        printf("你收到二次伤害!!!\n");
        (*w2).tili-=1;
    } 
    if((i==-1)||((*w2).tili>0))break;
    }
    if((*w2).tili>0)return 0;
    else return -1;
    }
    }
}
int Shan(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//闪 
{
    int x;
    if((*w2).juese)
    {
    if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303)||shenfen==4)
    {
    if(shenfen==5)
    {
    printf("触发诸葛亮锁定技——空城\n");
    }
    for(;;)
    {
    int m;
    printf("是否发动【八卦阵】防具效果?\n0 否\n1 是\n请输入选项之前的编号,以回车结束!\n");
    scanf("%d",&m);
    if(m==1)
    {
    Panding(paidui,paiduishu,qipaidui,qipaishu);
    if(qipaidui[(*qipaishu)-1].huase%2)
    {
    printf("【八卦阵】判定成功!\n");
    return 0;
    }
    }
    else if(m==0)
    {
    printf("【八卦阵】判定失败!\n");
    break;
    }
    else printf("你确定你输入的是“0”或“1”?\n");
    }
    }
    else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303))printf("【青釭剑】锁定技被触发!\n");
    for(;;)
    {
    printf("请输入手牌之前的编号,或者输入“-1”放弃打出【闪】,以回车结束!\n");
    scanf("%d",&x);
    if(x==-1)
    {
    return -1;
    break;
    }
    else if((*w2).shoupai[x].leixing==102)
    {
    printf("玩家打出");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    else printf("你确定你打出的是【闪】?\n");
    }
    }
    else
    {
    if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing!=303))
    {
    Panding(paidui,paiduishu,qipaidui,qipaishu);
    if(qipaidui[(*qipaishu)-1].huase%2)
    {
    printf("【八卦阵】判定成功!\n");
    return 0;
    }
    else printf("【八卦阵】判定失败!\n");
    }
    else if(((*w2).zhuangbei[1].leixing==331)&&((*w1).zhuangbei[0].leixing==303)||shenfen==5)
    {
    if(shenfen==5)
    {
    printf("曹操锁定技——兵锋触发!\n");
    }
    printf("【青釭剑】锁定技被触发!\n");
    }
    int i;
    for(x=0;x<((*w2).shoupaishu);x++)
    {
    if((*w2).shoupai[x].leixing==102)
    {
    printf("电脑打出");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    }
    return -1;
    }
}
int Sha(wujiang *w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//杀 
{
int x;
if((*w2).juese)
{
printf("请打出【闪】响应【杀】!否则你将受到1点伤害!\n");
x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
if(x==-1)
{
int i;
((*w2).tili)--;
printf("电脑对玩家造成1点伤害!\n");
i=Binsi(w1,w2,qipaidui,qipaishu);
if(shenfen==9)
{
    printf("触发审配锁定技——1.刚烈(敌人对你伤害1点,你对敌人伤害一点)\n");
    ((*w1).tili)--;
    i=Binsi(w1,w2,qipaidui,qipaishu);
}
if(shenfen==11)
{
    printf("触发袁术锁定技——崩溃(杀对你造成额外一点伤害)\n") ;
    ((*w2).tili)--;
    i=Binsi(w1,w2,qipaidui,qipaishu);

return i;
}
else if(x==0&&((*w1).zhuangbei[0].leixing==306))
{
int i;
if(((*w1).shoupaishu)>=2)
{
printf("电脑弃掉:\n");
((*w1).shoupai)[0].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[0];
for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
((*w1).shoupai)[0].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[0];
for(i=1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
printf("发动【贯石斧】武器效果使【杀】造成伤害!\n");
((*w2).tili)--;
i=Binsi(w1,w2,qipaidui,qipaishu);
return i;
}
else return 0;
}
else if(x==0&&((*w1).zhuangbei[0].leixing==304))
{
int i;
for(x=0;x<((*w1).shoupaishu);x++)
{
if((*w1).shoupai[x].leixing==101)
{
printf("电脑发动【青龙偃月刀】效果对玩家使用");
((*w1).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[x];
for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
return i;
break;
}
}
return 0;
}
}
else
{
x=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
if(x==-1)
{
if((*w1).zhuangbei[0].leixing==308||shenfen==6)
{
for(;;)
{
if(shenfen==6)
{
printf("触发黄忠锁定技——箭术\n");
}
printf("是否发动【麒麟弓】武器效果?\n0 否\n1 是\n");
scanf("%d",&x);
if(x==1)
{
if(((*w2).zhuangbei[2].leixing==-1)&&((*w2).zhuangbei[3].leixing==-1))
{
printf("电脑根本没有马,射你妹的马啊!\n");
break;
}
else
{
for(;;)
{
printf("0 ");
((*w2).zhuangbei[2]).Kanpai();
printf("1 ");
((*w2).zhuangbei[3]).Kanpai();
printf("请选择要弃掉的马,输入之前的编号,以回车结束!\n");
scanf("%d",&x);
if((x==0)&&((*w2).zhuangbei[2].leixing!=-1))
{
printf("你弃掉了电脑的");
((*w2).zhuangbei)[2].Kanpai();
qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
((*w2).zhuangbeishu)--;
(*qipaishu)++;
((*w2).zhuangbei)[2].leixing=-1;
((*w2).juli[0])++;
break;
}
else if((x==1)&&((*w2).zhuangbei[3].leixing!=-1))
{
printf("你弃掉了电脑的");
((*w2).zhuangbei)[3].Kanpai();
qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
((*w2).zhuangbeishu)--;
(*qipaishu)++;
((*w2).zhuangbei)[3].leixing=-1;
((*w1).juli[0])--;
break;
}
else printf("射你妹的马!");
}
break;
}
}
else if(x==0)break;
else printf("键盘上的“0”和“1”被你吃了吗?\n");
}
}
int i;
((*w2).tili)--;
printf("玩家对电脑造成1点伤害!\n");
if(shenfen==5)
{
    printf("触发曹操锁定技——奸雄\n");
    jianxiong+=1; 

if(shenfen==7&&huben==1)
{
    cout<<"是否发动许褚锁定技——虎贲(少摸一张牌,杀与决斗伤害+1)\n";
    ((*w2).tili)--;
}
i=Binsi(w1,w2,qipaidui,qipaishu);
return i;
}
else if(x==0&&((*w1).zhuangbei[0].leixing==306)||shenfen==7)
{
for(;;)
{
if(shenfen==7)
{
printf("触发许褚锁定技——裸衣\n");
}
printf("是否发动【贯石斧】武器效果?\n0 否\n1 是\n");
scanf("%d",&x);
if(x==1)
{
int i;
if((*w1).shoupaishu+(*w1).zhuangbeishu<=2)
{
printf("你除了【贯石斧】以外连2张牌都没有,发动你妹的效果!\n");
break;
}
else
{
printf("请分别弃掉两张牌!\n");
for(i=0;i<=2;i++)
{
for(;;)
{
printf("请选择区域:\n0 手牌\n1 装备\n");
scanf("%d",&x);
if(x==0&&((*w1).shoupaishu==0))printf("你根本没有手牌,弃你妹啊!\n");
else if(x==1&&((*w1).zhuangbeishu==1))printf("你根本没有别的装备,弃你妹啊!\n");
else if(x>=0&&x<=1)break;
else printf("键盘上的“0”和“1”被你吃了吗?\n");
}
if(x==0)
{
for(;;)
{
(*w1).Kanshoupai();
printf("弃牌请输入手牌之前的编号,以回车结束!\n");
scanf("%d",&x);
if(x>=0&&x<((*w1).shoupaishu))break;
else printf("弃你妹的手牌!\n");
}
printf("你弃掉了");
((*w1).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[x];
for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
}
else
{
for(;;)
{
(*w1).Kanzhuangbei();
printf("请输入装备之前的编号,以回车键结束!\n");
scanf("%d",&x);
if((((*w1).zhuangbei[x]).leixing!=-1)&&(x>=0)&&(x<=3))
{
printf("你弃掉了");
((*w1).zhuangbei)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).zhuangbei)[x];
((*w1).zhuangbeishu)--;
(*qipaishu)++;
((*w1).zhuangbei)[x].leixing=-1;
break;
}
else printf("弃你妹的装备!\n");
}
}
}
}
printf("玩家发动【贯石斧】武器效果使【杀】造成伤害!\n");
((*w2).tili)--;
i=Binsi(w1,w2,qipaidui,qipaishu);
return i;
break;
}
else if(x==0)break;
else printf("键盘上的“0”和“1”被你吃了吗?\n");
}
}
else if(x==0&&((*w1).zhuangbei[0].leixing==304))
{
for(;;)
{
printf("是否发动【青龙偃月刀】武器效果?\n0 否\n1 是\n");
scanf("%d",&x);
if(x==1)
{
for(;;)
{
printf("请对电脑使用一张【杀】!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
(*w1).Kanshoupai();
scanf("%d",&x);
if(x==-1)
{
return 0;
break;
}
else if((*w1).shoupai[x].leixing==101)
{
int i;
printf("玩家对电脑使用");
((*w1).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[x];
for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
return i;
break;
}
else printf("你确定你打出的是【杀】?\n");
}
}
else if(x==0)
{
return 0;
break;
}
else printf("你确定你输入的是“0”或“1”?\n");
}
}
else return 0;
}
return 0;
}
void Tao(wujiang*w1)//桃 
{
    ((*w1).tili)++;
    if((*w1).juese)
    {
        if(shenfen!=12)
        {
            printf("玩家恢复了1点体力!\n");
        }
        else
        {
            if(((*w1).tili)<=2)
            {
                printf("玩家恢复了1点体力!\n");
            }
            else
            {
                printf("触发曹仁锁定技——无援(体力大于2时,桃无效)\n"); 
                ((*w1).tili)-=1;
            }
        }
    }
    else
    {
        printf("电脑恢复了1点体力!\n");
    }  
    if(((*w1).tili)>((*w1).tilishangxian))
    {
        printf("你被撑死了!\n");
    }
}
void Chai(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)//过河拆桥 
{
    int i,x,y;
    if((*w1).juese)
    {
    for(;;)
    {
    if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
    {
    printf("对方空城,拆你妹啊!\n");
    break;
    }
    else
    {
    printf("请选择想拆的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
    scanf("%d",&x);
    if(x==0&&((*w2).shoupaishu==0))printf("你拆掉了一张空气!\n");
    else if(x==1&&((*w2).zhuangbeishu==0))printf("你拆掉了一张空气!\n");
    else if(x==2&&((*w2).pandingshu==0))printf("你拆掉了一张空气!\n");
    else if(x>=0&&x<=2)break;
    else printf("你拆掉了太空区里的一张牌!\n");
    }
    }
    switch(x)
    {
    case 0:
    srand((unsigned)time(NULL));
    y=rand()%((*w2).shoupaishu);
    printf("你弃掉了电脑的");
    ((*w2).shoupai)[y].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[y];
    for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    break;
    case 1:
    for(;;)
    {
    (*w2).Kanzhuangbei();
    printf("请输入装备之前的编号,以回车键结束!\n");
    scanf("%d",&y);
    if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
    {
    printf("你弃掉了电脑的");
    ((*w2).zhuangbei)[y].Kanpai();
    qipaidui[*qipaishu]=((*w2).zhuangbei)[y];
    ((*w2).zhuangbeishu)--;
    (*qipaishu)++;
    ((*w2).zhuangbei)[y].leixing=-1;
    if(!y)((*w2).zhuangbei)[y].changdu=1;
    else if(y==2)((*w2).juli[0])++;
    else if(y==3)((*w1).juli[0])--;
    break;
    }
    else printf("你弃掉了一张空气!\n");
    }
    break;
    case 2:
    for(;;)
    {
    (*w2).Kanpandingpai();
    printf("请输入判定牌之前的编号,以回车键结束!\n");
    scanf("%d",&y);
    if((*w2).pandingpai[y].leixing!=-1)
    {
    printf("你弃掉了电脑的");
    ((*w2).pandingpai)[y].Kanpai();
    qipaidui[*qipaishu]=((*w2).pandingpai)[y];
    ((*w2).pandingshu)--;
    (*qipaishu)++;
    ((*w2).pandingpai)[y].leixing=-1;
    break;
    }
    else printf("你弃掉了一张空气!\n");
    }
    break;
    default:break;
    }
    }
    else
    {
    if((*w2).zhuangbeishu)
    {
    if((*w2).zhuangbei[1].leixing!=-1)
    {
    printf("电脑弃掉了玩家的");
    ((*w2).zhuangbei)[1].Kanpai();
    qipaidui[*qipaishu]=((*w2).zhuangbei)[1];
    ((*w2).zhuangbeishu)--;
    (*qipaishu)++;
    ((*w2).zhuangbei)[1].leixing=-1;
    }
    else if((*w2).zhuangbei[3].leixing!=-1)
    {
    printf("电脑弃掉了玩家的");
    ((*w2).zhuangbei)[3].Kanpai();
    qipaidui[*qipaishu]=((*w2).zhuangbei)[3];
    ((*w2).zhuangbeishu)--;
    (*qipaishu)++;
    ((*w2).zhuangbei)[3].leixing=-1;
    ((*w1).juli[0])--;
    }
    else if((*w2).zhuangbei[0].leixing!=-1)
    {
    printf("电脑弃掉了玩家的");
    ((*w2).zhuangbei)[0].Kanpai();
    qipaidui[*qipaishu]=((*w2).zhuangbei)[0];
    ((*w2).zhuangbeishu)--;
    (*qipaishu)++;
    ((*w2).zhuangbei)[0].leixing=-1;
    ((*w2).zhuangbei)[0].changdu=1;
    }
    else
    {
    printf("电脑弃掉了玩家的");
    ((*w2).zhuangbei)[2].Kanpai();
    qipaidui[*qipaishu]=((*w2).zhuangbei)[2];
    ((*w2).zhuangbeishu)--;
    (*qipaishu)++;
    ((*w2).zhuangbei)[2].leixing=-1;
    ((*w2).juli[0])++;
    }
    }
    else
    {
    srand((unsigned)time(NULL));
    y=rand()%((*w2).shoupaishu);
    printf("电脑弃掉了玩家的手牌");
    ((*w2).shoupai)[y].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[y];
    for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    }
    }
}
void Qian(wujiang *w1,wujiang *w2)//顺手牵羊 
{
    int i,x,y;
    if((*w1).juese)
    {
    for(;;)
    {
    if((*w2).shoupaishu+(*w2).zhuangbeishu+(*w2).pandingshu==0)
    {
    printf("对方空城啦!你牵走了一张寂寞!\n");
    break;
    }
    else
    {
    printf("请选择想牵的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");
    scanf("%d",&x);
    if(x==0&&((*w2).shoupaishu==0))printf("你牵走了一张空气!\n");
    else if(x==1&&((*w2).zhuangbeishu==0))printf("你牵走了一张空气!\n");
    else if(x==2&&((*w2).pandingshu==0))printf("你牵走了一张空气!\n");
    else if(x>=0&&x<=2)break;
    else printf("你牵走了太空区里的一张牌!\n");
    }
    }
    switch(x)
    {
    case 0:
    srand((unsigned)time(NULL));
    y=rand()%((*w2).shoupaishu);
    printf("你牵走了电脑的");
    ((*w2).shoupai)[y].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
    for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    ((*w1).shoupaishu)++;
    break;
    case 1:
    for(;;)
    {
    (*w2).Kanzhuangbei();
    printf("请输入装备之前的编号,以回车键结束!\n");
    scanf("%d",&y);
    if((((*w2).zhuangbei[y]).leixing!=-1)&&(y>=0)&&(y<=3))
    {
    printf("你牵走了电脑的");
    ((*w2).zhuangbei)[y].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[y];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[y].leixing=-1;
    if(!y)((*w2).zhuangbei[y]).changdu=1;
    else if(y==2)((*w2).juli[0])++;
    else if(y==3)((*w1).juli[0])--;
    break;
    }
    else printf("你弃掉了一张空气!\n");
    }
    break;
    case 2:
    for(;;)
    {
    (*w2).Kanpandingpai();
    printf("请输入判定牌之前的编号,以回车键结束!\n");
    scanf("%d",&y);
    if((*w2).pandingpai[y].leixing!=-1)
    {
    printf("你牵走了电脑的");
    ((*w2).pandingpai)[y].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).pandingpai)[y];
    ((*w2).pandingshu)--;
    ((*w1).shoupaishu)++;
    ((*w2).pandingpai)[y].leixing=-1;
    break;
    }
    else printf("你牵走了一张空气!\n");
    }
    break;
    default:break;
    }
    }
    else
    {
    if((*w2).zhuangbeishu)
    {
    if((*w2).zhuangbei[1].leixing!=-1)
    {
    printf("电脑牵走了玩家的");
    ((*w2).zhuangbei)[1].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[1];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[1].leixing=-1;
    }
    else if((*w2).zhuangbei[3].leixing!=-1)
    {
    printf("电脑牵走了玩家的");
    ((*w2).zhuangbei)[3].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[3];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[3].leixing=-1;
    ((*w1).juli[0])--;
    }
    else if((*w2).zhuangbei[0].leixing!=-1)
    {
    printf("电脑牵走了玩家的");
    ((*w2).zhuangbei)[0].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[0].leixing=-1;
    ((*w2).zhuangbei)[0].changdu=1;
    }
    else
    {
    printf("电脑牵走了玩家的");
    ((*w2).zhuangbei)[2].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[2];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[2].leixing=-1;
    ((*w2).juli[0])--;
    }
    }
    else
    {
    srand((unsigned)time(NULL));
    y=rand()%((*w2).shoupaishu);
    printf("电脑牵走了玩家的手牌");
    ((*w2).shoupai)[y].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).shoupai)[y];
    for(i=y+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    ((*w1).shoupaishu)++;
    }
    }
}
void Wuzhong(wujiang*w1,pai A[104],int *x,pai B[104],int*y)//无中生有 
{
    wzshenyou=1; //不要摸牌时发动多余的技能 
    Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);
    wzshenyou=0;
}
int Juedou(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)//决斗 
{
int i,j,x;
if((*w1).juese)
{
for(;;)
{
j=0;
for(x=0;x<((*w2).shoupaishu);x++)
{
if((*w2).shoupai[x].leixing==101)
{
printf("电脑打出");
((*w2).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w2).shoupai)[x];
for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
((*w2).shoupaishu)--;
(*qipaishu)++;
j=1;
break;
}
}
if(!j)
{
printf("玩家对电脑造成1点伤害!\n");
if(shenfen==7&&huben==1)
{
    cout<<"是否发动许褚锁定技——虎贲(少摸一张牌,杀与决斗伤害+1)\n";
    ((*w2).tili)--;
}
((*w2).tili)--;
i=Binsi(w1,w2,qipaidui,qipaishu);
return i;
break;
}
j=0;
for(;;)
{
printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
(*w1).Kanshoupai();
scanf("%d",&x);
if(x==-1)
{
int i;
((*w1).tili)--;
printf("电脑对玩家造成1点伤害!\n");
i=Binsi(w2,w1,qipaidui,qipaishu);
return i;
break;
}
else if(((*w1).zhuangbei[0].leixing==305)&&x==100)
{
pai p=Zhangba(w1,qipaidui,qipaishu);
p.paifu=-1;
printf("打出!\n");
j=1;
break;
}
else if((*w1).shoupai[x].leixing==101)
{
printf("玩家打出");
((*w1).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[x];
for(i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
j=1;
break;
}
else printf("你确定你打出的是【杀】?\n");
}
}
}
else
{
for(;;)
{
j=0;
for(;;)
{
printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
if(((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
(*w2).Kanshoupai();
scanf("%d",&x);
if(x==-1)
{
int i;
((*w2).tili)--;
printf("电脑对玩家造成1点伤害!\n");
i=Binsi(w1,w2,qipaidui,qipaishu);
return i;
break;
}
else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
{
pai p=Zhangba(w2,qipaidui,qipaishu);
p.paifu=-1;
printf("打出!\n");
j=1;
break;
}
else if((*w2).shoupai[x].leixing==101)
{
printf("玩家打出");
((*w2).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w2).shoupai)[x];
for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
((*w2).shoupaishu)--;
(*qipaishu)++;
j=1;
break;
}
else printf("你确定你打出的是【杀】?\n");
}
j=0;
for(x=0;x<((*w1).shoupaishu);x++)
{
if((*w1).shoupai[x].leixing==101)
{
printf("电脑打出");
((*w1).shoupai)[x].Kanpai();
qipaidui[*qipaishu]=((*w1).shoupai)[x];
for(int i=x+1;i<=((*w1).shoupaishu);i++)((*w1).shoupai)[i-1]=((*w1).shoupai)[i];
((*w1).shoupaishu)--;
(*qipaishu)++;
j=1;
break;
}
}
if(!j)
{
printf("玩家对电脑造成1点伤害!\n");
((*w2).tili)--;
i=Binsi(w2,w1,qipaidui,qipaishu);
return i;
break;
}
}
}
}
int Jiedao(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//借刀杀人 
{
    int i,j=0,x;
    if((*w1).juese)
    {
    for(x=0;x<((*w2).shoupaishu);x++)
    {
    if((*w2).shoupai[x].leixing==101)
    {
    printf("电脑对玩家使用");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    j=1;
    break;
    }
    }
    if(j)
    {
    i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
    return i;
    printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    }
    else
    {
    printf("电脑放弃使用【杀】,玩家获得电脑的武器");
    (*w2).zhuangbei[0].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[0].leixing=-1;
    ((*w2).zhuangbei)[0].changdu=1;
    (*w1).Kanshoupai();
    return 0;
    }
    }
    else
    {
    for(;;)
    {
    printf("请对电脑使用一张【杀】,否则电脑将获得你的武器!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    (*w2).Kanshoupai();
    scanf("%d",&x);
    if(x==-1)break;
    else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
    {
    pai p=Zhangba(w2,qipaidui,qipaishu);
    p.paifu=-1;
    printf("使用!\n");
    j=1;
    break;
    }
    else if((*w2).shoupai[x].leixing==101)
    {
    printf("玩家对电脑使用");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    j=1;
    break;
    }
    else printf("你确定你使用的是【杀】?\n");
    }
    if(j)
    {
    i=Sha(w2,w1,paidui,paiduishu,qipaidui,qipaishu);
    return i;
    printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    }
    else
    {
    printf("玩家放弃使用【杀】,电脑获得玩家的武器");
    ((*w2).zhuangbei)[0].Kanpai();
    (*w1).shoupai[(*w1).shoupaishu]=((*w2).zhuangbei)[0];
    ((*w2).zhuangbeishu)--;
    ((*w1).shoupaishu)++;
    ((*w2).zhuangbei)[0].leixing=-1;
    ((*w2).zhuangbei)[0].changdu=1;
    return 0;
    }
    }
}
void Taoyuan(wujiang*w)//桃园三结义 
{
    if((*w).tili<(*w).tilishangxian)
    {
    ((*w).tili)++;
    if((*w).juese)printf("玩家");
    else printf("电脑");
    printf("恢复1点体力!\n");
    }
}
void Kaipai(pai paidui[104],int* paiduishu,int renshu,pai wugu[10])//五谷丰登开牌 
{
    int i;
    printf("五谷丰登开牌:\n");
    for(i=1;i<=renshu;i++)
    {
    wugu[i-1]=paidui[104-(*paiduishu)];
    (*paiduishu)--;
    printf("%d ",i-1);
    wugu[i-1].Kanpai();
    }
}
void Qupai(pai wugu[10],wujiang*w)//五谷丰登选牌 
{
    int i,x;
    printf("五谷丰登开牌:\n");
    for(i=0;(wugu[i].leixing)!=-1;i++)
    {
    printf("%d ",i);
    wugu[i].Kanpai();
    }
    if((*w).juese)
    {
    for(;;)
    {
    printf("请选择你想要的卡牌,输入卡牌之前的编号,以回车结束!\n");
    scanf("%d",&x);
    if(wugu[x].leixing!=-1)
    {
    printf("玩家选择");
    wugu[x].Kanpai();
    (*w).shoupai[(*w).shoupaishu]=wugu[x];
    ((*w).shoupaishu)++;
    for(i=x+1;i<=9;i++)wugu[i-1]=wugu[i];
    wugu[9].leixing=-1;
    break;
    }
    printf("你选择了一张空气加入手牌!");
    }
    }
    else
    {
    printf("电脑选择");
    wugu[0].Kanpai();
    (*w).shoupai[(*w).shoupaishu]=wugu[0];
    ((*w).shoupaishu)++;
    for(i=1;i<=9;i++)wugu[i-1]=wugu[i];
    wugu[9].leixing=-1;
    }
}
void Rengpai(pai wugu[10],pai qipaidui[104],int*qipaishu)//五谷丰登扔牌 
{
    int i;
    for(i=0;wugu[i].leixing!=-1;i++)
    {
        qipaidui[*qipaishu]=wugu[i];
        (*qipaishu)++;
        wugu[i].leixing=-1;
    }
}
int Nanman(wujiang*w1,wujiang*w2,pai qipaidui[104],int*qipaishu)//南蛮入侵 
{
    int i,x;
    if((*w1).juese)
    {
    for(x=0;x<((*w2).shoupaishu);x++)
    {
    if((*w2).shoupai[x].leixing==101)
    {
    printf("电脑打出");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(int i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    }
    if(shenfen==8)
    {
        cout<<"发动孟获锁定技——南蛮(南蛮入侵对你无效,对敌伤害+1)\n";
        printf("玩家对电脑造成1点伤害!\n");
        ((*w2).tili)--;
    } 
    printf("玩家对电脑造成1点伤害!\n");
    ((*w2).tili)--;
    i=Binsi(w1,w2,qipaidui,qipaishu);
    return i;
    }
    else
    {
    for(;;)
    {
    printf("请打出一张【杀】响应【南蛮入侵】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");
    if(((*w2).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    (*w2).Kanshoupai();
    scanf("%d",&x);
    if(x==-1)
    {
    int i;
    if(shenfen==8)
    {
        cout<<"发动孟获锁定技——南蛮(南蛮入侵对你无效,对敌伤害+1)\n";
    }
    else
    {
        ((*w2).tili)--;
        printf("电脑对玩家造成1点伤害!\n");
    }
    i=Binsi(w1,w2,qipaidui,qipaishu);
    return i;
    break;
    }
    else if(((*w2).zhuangbei[0].leixing==305)&&x==100)
    {
    pai p=Zhangba(w2,qipaidui,qipaishu);
    p.paifu=-1;
    printf("使用!\n");
    return 0;
    break;
    }
    else if((*w2).shoupai[x].leixing==101)
    {
    printf("玩家打出");
    ((*w2).shoupai)[x].Kanpai();
    qipaidui[*qipaishu]=((*w2).shoupai)[x];
    for(i=x+1;i<=((*w2).shoupaishu);i++)((*w2).shoupai)[i-1]=((*w2).shoupai)[i];
    ((*w2).shoupaishu)--;
    (*qipaishu)++;
    return 0;
    break;
    }
    else printf("你确定你打出的是【杀】?\n");
    }
    }
}
int Wanjian(wujiang*w1,wujiang*w2,pai paidui[104],int*paiduishu,pai qipaidui[104],int*qipaishu)//万箭齐发 
{
    int i;
    i=Shan(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    if(i==-1)
    {
        i=Binsi(w1,w2,qipaidui,qipaishu);
        return i;
    }
    else return 0;
}
int Chupai(pai paidui[104],pai qipaidui[104],int *paiduishu,int*qipaishu,wujiang*w1,wujiang*w2,pai yuanshipaidui[2][4][13])//出牌 
{
    pai p1;
    int sha=1;int y=-1,i,t=((*w1).shoupaishu)-1;
    for(;;t--)
    {
    
    if((*w1).juese)
    {
    printf("\n电脑当前手牌数:%d\n",((*w2).shoupaishu));
    (*w2).Kanzhuangbei();
    (*w1).Kanshoupai();
    (*w1).Kanzhuangbei();
    }
    int j=0;
    if((*w1).juese&&((*w1).zhuangbei[0].leixing==305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");
    y=Xuanpai(w1,t);
    p1=Panpai(w1,&sha,y,qipaidui,qipaishu);
    if((p1).leixing==-1)break;
    else if((p1).leixing==0)continue;
    else
    {
    int duixiang;
    duixiang=Mubiao(p1,w1,w2,&sha);
    if(duixiang==-2)continue;
    else
    {
    Da1pai(w1,w2,qipaidui,qipaishu,y);
    Miaoshu(p1,((*w1).juese),duixiang);
    if(!((*w1).juese))
    {
    printf("\n电脑当前手牌数:%d\n",((*w1).shoupaishu));
    (*w1).Kanzhuangbei();
    (*w2).Kanshoupai();
    (*w2).Kanzhuangbei();
    }
    switch(p1.leixing)
    {
    case 101:
    i=Sha(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    if(i==-1){return -1;break;}
    if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    break;
    case 103:
    Tao(w1);
    break;
    case 201:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Chai(w1,w2,qipaidui,qipaishu);
    else;
    if((*w1).juese)(*w1).Kanshoupai();
    break;
    case 202:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Qian(w1,w2);
    else;
    if((*w1).juese)(*w1).Kanshoupai();
    break;
    case 203:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Wuzhong(w1,paidui,paiduishu,qipaidui,qipaishu);
    else;
    break;
    case 204:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))
    {
    i=Juedou(w1,w2,qipaidui,qipaishu);
    if(i==-1)return -1;
    if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    }
    break;
    case 205:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))
    {
    i=Jiedao(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    if(i==-1)return -1;
    if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    }
    break;
    case 206:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Taoyuan(w1);
    j=0;
    for(;;)
    {
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Taoyuan(w2);
    break;
    case 207:
    pai wugu[10];
    for(i=1;i<=10;i++)wugu[i-1].leixing=-1;
    Kaipai(paidui,paiduishu,2,wugu);
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Qupai(wugu,w1);
    for(;;)
    {
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))Qupai(wugu,w2);
    Rengpai(wugu,qipaidui,qipaishu); printf("弃牌数:%d\n",*qipaishu);
    break;
    case 208:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))
    {
    i=Nanman(w1,w2,qipaidui,qipaishu);
    if(i==-1)return -1;
    if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    }
    break;
    case 209:
    for(;;)
    {
    i=Wuxie(&p1,w1,w2,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    i=Wuxie(&p1,w2,w1,qipaidui,qipaishu,0);
    if(!i)break;
    j++;
    }
    if(!(j%2))
    {
    i=Wanjian(w1,w2,paidui,paiduishu,qipaidui,qipaishu);
    if(i==-1)return -1;
    if((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w1).tili,(*w1).tilishangxian,(*w2).tili,(*w2).tilishangxian);
    else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n",(*w2).tili,(*w2).tilishangxian,(*w1).tili,(*w1).tilishangxian);
    }
    break;
    case 361:
    case 362:
    case 363:
    ((*w1).juli[0])--;break;
    case 381:
    case 382:
    case 383:
    ((*w2).juli[0])++;break;
    default:break;
    }
    printf("\n");
    }
    }
    }
    return 0;
}
void Qipai(pai shoupai[20],int *shoupaishu,pai qipaidui[104],int *qipaishu,int juese,int *shoupaishangxian)//弃牌 
{
    int x;
    if((*shoupaishu)>(*shoupaishangxian))
    {
    if(juese!=1&&juese!=0)printf("身份参数错误!");
    int q=(*shoupaishu)-(*shoupaishangxian);
    int i,j;
    for(j=1;j<=q;j++)
    {
    for(;;)
    {
    if(juese)
    {
    if(shenfen==12&&*shoupaishu<=8)
    {
        printf("触发曹仁锁定技——坚守(手牌数小于等于8时,不弃牌)\n");
        return ;
    } 
    printf("弃牌请输入手牌之前的编号,以回车结束!\n注:一次只能弃一张牌\n");
    printf("手牌数:%d\n",*shoupaishu);
    scanf("%d",&x);
    if(x>=0&&x<(*shoupaishu))break;
    else printf("你弃掉了一张空气!\n");
    }
    else
    {
    srand((unsigned)time(NULL));
    x=rand()%(*shoupaishu);
    break;
    }
    }
    qipaidui[*qipaishu]=shoupai[x];
    for(i=x+1;i<=(*shoupaishu);i++)shoupai[i-1]=shoupai[i];
    (*shoupaishu)--;
    if(juese)printf("弃牌阶段玩家弃置");
    else printf("弃牌阶段电脑弃置");
    qipaidui[*qipaishu].Kanpai();
    (*qipaishu)++;
    int m;
    if(juese)
    {
    printf("玩家当前手牌:\n");
    for(m=0;m<=(*shoupaishu-1);m++)
    {
    printf("%d ",m);
    (shoupai[m]).Kanpai();
    }
    } printf("弃牌堆:%d\n",*qipaishu);
    }
    }
}
int Huihe(pai A[104],pai B[104],int *x,int *y,pai yuanshipaidui[2][4][13],wujiang *w1,wujiang *w2)//回合 
{
    printf("\n回合开始阶段……\n");
    huben=0;//许褚 
    haoqiang=0;//袁绍 
    switch((*w1).huihekaishi)
    {
        case 0:break;
        default:printf("回合开始阶段参数错误!\n");break;
    }
    printf("判定阶段……\n");
    int K=0;
    if((*w1).pandingshu>0)
    {
        int i,j;
        for(;(*w1).pandingshu;)
        {
            switch((*w1).pandingpai[0].leixing)
        {
        case 251:printf("【乐不思蜀】开始判定……\n"); break;
        case 252:printf("【闪电】开始判定……\n");break;
        default:printf("【??】开始判定……\n");break;
    }
    j=0;
    pai p=((*w1).pandingpai[0]);
    for(;;)
    {
        i=Wuxie(&p,w2,w1,B,y,0);
        if(!i)break;
        j++;
        i=Wuxie(&p,w1,w2,B,y,0);
        if(!i)break;
        j++;
    }
    switch((*w1).pandingpai[0].leixing)
    {
        case 251:
        if(!(j%2))
        {
            printf("【乐不思蜀】的判定牌是:");
            Panding(A,x,B,y);
            if((B[(*y)-1].huase)!=1)
            {
            printf("【乐不思蜀】判定成功!\n");
            if((*w1).juese)printf("玩家");
            else printf("电脑");
            printf("跳过出牌阶段!\n");
            K=-1;
        }
        else 
        {
            printf("【乐不思蜀】判定失败!\n");
        }
    }
    B[*y]=(*w1).pandingpai[0];
    ((*w1).pandingshu)--;
    (*w1).pandingpai[0]=(*w1).pandingpai[1];
    (*w1).pandingpai[1]=(*w1).pandingpai[2];
    (*w1).pandingpai[2].leixing=-1;
    (*y)++;
    break;
    case 252:
    if(!(j%2))
    {
    printf("【闪电】的判定牌是:");
    Panding(A,x,B,y);
    if((B[(*y)-1].huase==0)&&(B[(*y)-1].dianshu>=1)&&(B[(*y)-1].dianshu<=8))
    {
    printf("【闪电】判定成功!\n");
    printf("轰隆!!!\n");
    if((*w1).juese)printf("正道的光,照在了你身上——玩家");
    else printf("天助我也——电脑");
    printf("受到3点巨额雷电伤害!");
    system("pause");
    ((*w1).tili)=((*w1).tili)-3;
    i=Binsi(w2,w1,B,y);
    B[*y]=(*w1).pandingpai[0];
    ((*w1).pandingshu)--;
    (*w1).pandingpai[0]=(*w1).pandingpai[1];
    (*w1).pandingpai[1]=(*w1).pandingpai[2];
    (*w1).pandingpai[2].leixing=-1;
    (*y)++;
    if(i==-1)return -1;
    }
    else
    {
    printf("【闪电】判定失败!\n");
    printf("幸哉幸哉\n");
    (*w2).pandingpai[2]=(*w2).pandingpai[1];
    (*w2).pandingpai[1]=(*w2).pandingpai[0];
    (*w2).pandingpai[0]=(*w1).pandingpai[0];
    (*w1).pandingpai[0]=(*w1).pandingpai[1];
    (*w1).pandingpai[1]=(*w1).pandingpai[2];
    (*w1).pandingpai[2].leixing=-1;
    ((*w1).pandingshu)--;
    ((*w2).pandingshu)++;
    }
    break;
    }
    default:printf("判定牌错误!");
    } printf("弃牌数:%d\n",*y);
    }
    }
    else if(!((*w1).pandingshu));
    else printf("判定阶段参数错误!\n");
    printf("摸牌阶段……\n");
    switch((*w1).mopai)
    {
    case 0:Mopai(&((*w1).shoupaishu),(*w1).shoupai,A,x,B,y,(*w1).juese);break;
    case -1:break;
    default:printf("摸牌阶段参数错误!\n");break;
    }
    if(K==-1)goto M;
    switch((*w1).chupai)
    {
    case 0:
    {
    int i;
    i=Chupai(A,B,x,y,w1,w2,yuanshipaidui);
    if(i==-1)
    {
    return -1;
    break;
    }
    else
    break;
    }
    case -1:break;
    default:printf("出牌阶段参数错误!\n");break;
    }
    M:
    printf("弃牌阶段……\n");
    switch((*w1).qipai)
    {
    case 0:
    Qipai((*w1).shoupai,&((*w1).shoupaishu),B,y,(*w1).juese,&((*w1).tili));break;
    default:printf("弃牌阶段参数错误!\n");break;
    }
    printf("回合结束阶段……\n");
    switch((*w1).huihejieshu)
    {
    case 0:break;
    default:printf("回合结束阶段参数错误!\n");break;
    }
    return 0;
}
int main()
{
    system("color b");
    printf("欢迎来到三国杀!!!\n");
    printf("玩前必读!!!\n");
    printf("三国杀记牌口诀:\n拆六顺五无中四\n南蛮决乐无懈三\n借刀五谷闪电二\n桃园箭盾两八卦\n十一武器弩二把\n三十杀和十五闪\n八桃加减马各三\n");   
    printf("注释:\n拆六顺五就是说'过河拆桥'有6张,'顺手牵羊'有5张,而无中四就是'无懈可击'有4张\n");
    printf("南蛮决乐无懈三,就是说'南蛮入侵'、'决斗'、'乐不思蜀'和'无懈可击'各有3张\n");
    printf("借刀五谷闪电二,意思是'借刀杀人'有2张,'五谷丰登'有2张,'闪电'也有2张\n");
    printf("桃园箭盾两八卦,意味着'桃园结义'、'万箭齐发'和'仁王盾'各有一张,而'八卦阵'有2张\n");
    printf("十一武器弩两把,就是说有11把武器,其中有2把诸葛连弩\n");
    printf("此外还有30个杀,15个闪,以及8个桃\n");
    printf("而控制距离的'+1马'和'-1马'都各有三张\n");
    printf("更多技巧——\n");
    printf("链接:https://baike.baidu.com/item/%E4%B8%89%E5%9B%BD%E6%9D%80/10981?fr=aladdin\n");
    system("pause");
    system("cls");
    printf("游戏开始!!!\n");
    printf("请选择武将:\n(输入武将前面的序号)\n");
    printf("1.张飞\n");
    printf("2.庞统\n");
    printf("3.周瑜\n");
    printf("4.诸葛亮\n");
    printf("5.曹操\n");
    printf("6.黄忠\n");
    printf("7.许褚\n");
    printf("8.孟获\n"); 
    printf("9.审配\n");
    printf("10.袁绍\n");
    printf("11.袁术\n");
    printf("12.曹仁\n"); 
    cin>>shenfen;
    if(shenfen==1)
    {
        printf("恭喜你获得张飞锁定技——咆哮(杀的次数无限制)\n");
    }
    if(shenfen==2)
    {
        printf("恭喜你获得庞统限定技——涅槃(濒死时生命值回复为3,下回合多摸3张牌)\n");
    }
    if(shenfen==3)
    {
        printf("恭喜你获得周瑜锁定技——英姿(你比别人多摸一张牌)\n");
    }
    if(shenfen==4)
    {
        printf("恭喜你获得诸葛亮锁定技——空城(自带不可拆八卦阵)\n");
    }
    if(shenfen==5)
    {
        printf("恭喜你获得曹操锁定技——兵锋(自带不可拆青釭剑)\n");
        printf("恭喜你获得曹操锁定技——屯田(摸牌时随机判定,若是奇数摸三张牌,偶数摸两张牌)\n");
        printf("恭喜你获得曹操锁定技——奸雄(每对用杀对敌产生两点伤害,下回合多模1张牌)\n");
    }
    if(shenfen==6)
    {
        printf("恭喜你获得黄忠锁定技——箭术(自带不可拆麒麟弓)\n");
    }
    if(shenfen==7)
    {
        printf("恭喜你获得许褚锁定技——裸衣(自带不可拆贯石斧)\n");
        printf("恭喜你获得许褚锁定技——虎贲(少摸一张牌,杀与决斗伤害+1)\n"); 
    }
    if(shenfen==8)
    {
        printf("恭喜你获得孟获锁定技——南蛮(南蛮入侵对你无效,对敌伤害+1)\n");
    }
    if(shenfen==9)
    {
        printf("恭喜你获得审配锁定技——1.刚烈(敌人用杀对你伤害1点,你对敌人伤害一点(敌人体力值>1时)\n");
        printf("                        2.死节(濒死时需2个桃,若没死下回合多摸3张牌)\n"); 
    }
    if(shenfen==10) 
    {
        printf("恭喜你获得袁绍限定技——1.四世三公(开局多摸七张牌)\n");
        printf("恭喜你获得袁绍锁定技——2.结交豪强(可以多出一张杀,多摸一张牌)\n");
        printf("恭喜你获得袁绍锁定技——3.骄纵(濒死时需两张桃)\n"); 
    }
    if(shenfen==11)
    {
        printf("恭喜你获得袁术锁定技——伪帝(开局多摸14张牌,然后每回合依次递减2(到0为止))\n");
        printf("恭喜你获得袁术锁定技——崩溃(杀对你造成额外一点伤害)\n") ;
    }
    if(shenfen==12)
    {
        printf("恭喜你获得曹仁锁定技——坚守(手牌数小于等于8时,不弃牌)\n");
        printf("恭喜你获得曹仁锁定技——无援(体力大于2时,桃无效)\n"); 
    }
    system("pause");
    system("cls");
    void Kanshoupai(pai p);
    pai yuanshipaidui[2][4][13],qipaidui[208],paidui[208];
    wujiang wanjia,com;
    com.tili=wanjia.tili=4;//体力 
    com.tilishangxian=wanjia.tilishangxian=4;//体力上限 
    com.huihekaishi=wanjia.huihekaishi=0;
    com.panding=wanjia.panding=0;
    com.mopai=wanjia.mopai=0;
    com.chupai=wanjia.chupai=0;
    com.qipai=wanjia.qipai=0;
    com.huihejieshu=wanjia.huihejieshu=0;
    com.shoupaishu=wanjia.shoupaishu=0;
    com.pandingshu=wanjia.pandingshu=0;
    com.zhuangbeishu=wanjia.zhuangbeishu=0;
    com.juese=0;wanjia.juese=1;
    pai p;
    p.leixing=-1;
    com.zhuangbei[0]=com.zhuangbei[1]=com.zhuangbei[2]=com.zhuangbei[3]=wanjia.zhuangbei[0]=wanjia.zhuangbei[1]=wanjia.zhuangbei[2]=wanjia.zhuangbei[3]=p;
    com.zhuangbei[0].changdu=wanjia.zhuangbei[0].changdu=1;
    com.pandingpai[0]=com.pandingpai[1]=com.pandingpai[2]=wanjia.pandingpai[0]=wanjia.pandingpai[1]=wanjia.pandingpai[2]=p;
    com.juli[0]=wanjia.juli[0]=1;
    int a,b,c;
    for(a=0;a<=1;a++)
    {
        for(b=0;b<=3;b++)
        {
            for(c=0;c<=12;c++)
            {
                yuanshipaidui[a][b][c].paifu=a;
                yuanshipaidui[a][b][c].huase=b;
                yuanshipaidui[a][b][c].dianshu=c;
            }
        }
    }
    yuanshipaidui[0][0][0].leixing=204;
    yuanshipaidui[0][0][1].leixing=331;
    yuanshipaidui[0][0][2].leixing=201;
    yuanshipaidui[0][0][3].leixing=201;
    yuanshipaidui[0][0][4].leixing=304;yuanshipaidui[0][0][4].changdu=3;
    yuanshipaidui[0][0][5].leixing=251;
    yuanshipaidui[0][0][6].leixing=101;
    yuanshipaidui[0][0][7].leixing=101;
    yuanshipaidui[0][0][8].leixing=101;
    yuanshipaidui[0][0][9].leixing=101;
    yuanshipaidui[0][0][10].leixing=202;
    yuanshipaidui[0][0][11].leixing=201;
    yuanshipaidui[0][0][12].leixing=208;
    yuanshipaidui[0][1][0].leixing=209;
    yuanshipaidui[0][1][1].leixing=102;
    yuanshipaidui[0][1][2].leixing=103;
    yuanshipaidui[0][1][3].leixing=103;
    yuanshipaidui[0][1][4].leixing=308;yuanshipaidui[0][1][4].changdu=5;
    yuanshipaidui[0][1][5].leixing=103;
    yuanshipaidui[0][1][6].leixing=103;
    yuanshipaidui[0][1][7].leixing=103;
    yuanshipaidui[0][1][8].leixing=103;
    yuanshipaidui[0][1][9].leixing=101;
    yuanshipaidui[0][1][10].leixing=101;
    yuanshipaidui[0][1][11].leixing=103;
    yuanshipaidui[0][1][12].leixing=102;
    yuanshipaidui[0][2][0].leixing=204;
    yuanshipaidui[0][2][1].leixing=101;
    yuanshipaidui[0][2][2].leixing=101;
    yuanshipaidui[0][2][3].leixing=101;
    yuanshipaidui[0][2][4].leixing=101;
    yuanshipaidui[0][2][5].leixing=101;
    yuanshipaidui[0][2][6].leixing=101;
    yuanshipaidui[0][2][7].leixing=101;
    yuanshipaidui[0][2][8].leixing=101;
    yuanshipaidui[0][2][9].leixing=101;
    yuanshipaidui[0][2][10].leixing=101;
    yuanshipaidui[0][2][11].leixing=205;
    yuanshipaidui[0][2][12].leixing=205;
    yuanshipaidui[0][3][0].leixing=204;
    yuanshipaidui[0][3][1].leixing=102;
    yuanshipaidui[0][3][2].leixing=102;
    yuanshipaidui[0][3][3].leixing=102;
    yuanshipaidui[0][3][4].leixing=102;
    yuanshipaidui[0][3][5].leixing=101;
    yuanshipaidui[0][3][6].leixing=101;
    yuanshipaidui[0][3][7].leixing=101;
    yuanshipaidui[0][3][8].leixing=101;
    yuanshipaidui[0][3][9].leixing=101;
    yuanshipaidui[0][3][10].leixing=102;
    yuanshipaidui[0][3][11].leixing=103;
    yuanshipaidui[0][3][12].leixing=101;
    yuanshipaidui[1][0][0].leixing=252;
    yuanshipaidui[1][0][1].leixing=302;yuanshipaidui[1][0][1].changdu=2;
    yuanshipaidui[1][0][2].leixing=202;
    yuanshipaidui[1][0][3].leixing=202;
    yuanshipaidui[1][0][4].leixing=383;
    yuanshipaidui[1][0][5].leixing=303;yuanshipaidui[1][0][5].changdu=2;
    yuanshipaidui[1][0][6].leixing=208;
    yuanshipaidui[1][0][7].leixing=101;
    yuanshipaidui[1][0][8].leixing=101;
    yuanshipaidui[1][0][9].leixing=101;
    yuanshipaidui[1][0][10].leixing=210;
    yuanshipaidui[1][0][11].leixing=305;yuanshipaidui[1][0][11].changdu=3;
    yuanshipaidui[1][0][12].leixing=362;
    yuanshipaidui[1][1][0].leixing=206;
    yuanshipaidui[1][1][1].leixing=102;
    yuanshipaidui[1][1][2].leixing=207;
    yuanshipaidui[1][1][3].leixing=207;
    yuanshipaidui[1][1][4].leixing=361;
    yuanshipaidui[1][1][5].leixing=251;
    yuanshipaidui[1][1][6].leixing=203;
    yuanshipaidui[1][1][7].leixing=203;
    yuanshipaidui[1][1][8].leixing=203;
    yuanshipaidui[1][1][9].leixing=101;
    yuanshipaidui[1][1][10].leixing=203;
    yuanshipaidui[1][1][11].leixing=201;
    yuanshipaidui[1][1][12].leixing=381;
    yuanshipaidui[1][2][0].leixing=301;yuanshipaidui[1][2][0].changdu=1;
    yuanshipaidui[1][2][1].leixing=331;
    yuanshipaidui[1][2][2].leixing=201;
    yuanshipaidui[1][2][3].leixing=201;
    yuanshipaidui[1][2][4].leixing=382;
    yuanshipaidui[1][2][5].leixing=251;
    yuanshipaidui[1][2][6].leixing=208;
    yuanshipaidui[1][2][7].leixing=101;
    yuanshipaidui[1][2][8].leixing=101;
    yuanshipaidui[1][2][9].leixing=101;
    yuanshipaidui[1][2][10].leixing=101;
    yuanshipaidui[1][2][11].leixing=210;
    yuanshipaidui[1][2][12].leixing=210;
    yuanshipaidui[1][3][0].leixing=301;yuanshipaidui[1][3][0].changdu=1;
    yuanshipaidui[1][3][1].leixing=102;
    yuanshipaidui[1][3][2].leixing=202;
    yuanshipaidui[1][3][3].leixing=202;
    yuanshipaidui[1][3][4].leixing=306;yuanshipaidui[1][3][4].changdu=3;
    yuanshipaidui[1][3][5].leixing=102;
    yuanshipaidui[1][3][6].leixing=102;
    yuanshipaidui[1][3][7].leixing=102;
    yuanshipaidui[1][3][8].leixing=102;
    yuanshipaidui[1][3][9].leixing=102;
    yuanshipaidui[1][3][10].leixing=102;
    yuanshipaidui[1][3][11].leixing=307;yuanshipaidui[1][3][11].changdu=4;
    yuanshipaidui[1][3][12].leixing=363;
    int paiduishu=104;
    int qipaishu=0;
    Qishixipai(yuanshipaidui,paidui);
    Qishishoupai(&wanjia,paidui,&(paiduishu),qipaidui,&(qipaishu));
    Qishishoupai(&com,paidui,&(paiduishu),qipaidui,&(qipaishu));
    int i;
    for(;;)//判断结束 
    {
        i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&wanjia,&com);//开始正式打牌 
        if(i==-1)
        {
            cout<<"\n我方胜利\n游戏结束···\n"; 
            break;
        }
        i=Huihe(paidui,qipaidui,&paiduishu,&qipaishu,yuanshipaidui,&com,&wanjia);
        if(i==-1)
        {
            cout<<"\n我方失败(遗憾退场)\n游戏结束···\n"; 
            break;
        }
    }
    return 0;
}

三国杀代码12武将C++相关推荐

  1. 年增代码 12.9 亿行,每天完成需求近 4000 个,鹅厂程序员秘密大爆料!

    整理 | 伍杏玲 出品 | 程序人生(ID:coder_life) 封图 | 程序人生付费下载于视觉中国 2019年,腾讯员工两次以"壕无人性"喜提热搜:网友根据腾讯第一季财报算出 ...

  2. 三国杀移动版武将台词大全

    哈哈,今天来干一件傻事,来写写三国杀移动版武将台词大全(本来准备用 json 格式,但是 yaml 其实看起来更简洁一些,使用 Python,Ruby 等之类的读取成 Hash 的形式也很方便,对于学 ...

  3. 丹佛斯变频器al13故障_丹佛斯变频器故障代码12怎么处理,

    匿名用户 1级 2014-12-26 回答 丹佛斯变频器故障代码12表示达转矩极限. 处理方法: (1)频器输出电流已经超过电机的额定电流,降低电机负荷: (2)核实变频机与电机是否匹配: (3)检查 ...

  4. c 语言的三国杀代码大全,三国杀武将语言代码~

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 {3:1:1}这就是桃园吗 {3:2:1}什么 此地名叫麦城 {3:3:1}实在是 杀不动了 {3:4:1}将星陨落 天命难违 {3:5:1}这就是失败的 ...

  5. 用VS Code直接浏览GitHub代码 | 12.1K星

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI "看GitHub代码"这件事上,还在网页上点点点? 用开发工具看代码,不香吗? 于是,它来了,它来了--可以直接用VS ...

  6. 优化模型验证关键代码12:if_then_else条件约束的线性化方法及docplex代码实现

    本专栏系列文章: 优化模型验证关键代码11:docplex中的逻辑约束 IF_Then_运筹码仓的博客-CSDN博客 优化模型验证关键代码10:旅行商问题的docplex实现及分析_运筹码仓的博客-C ...

  7. 【路径规划】基于蜣螂优化算法的三维无人机路径规划(山区地形)【Matlab代码#12】

    文章目录 [可更换其他算法,`获取资源`请见文章第5节:资源获取] 1. 蜣螂优化算法DBO 2. 无人机路径规划 3. 部分代码展示 4. 效果图展示 5. 资源获取 [可更换其他算法,获取资源请见 ...

  8. c 语言的三国杀代码大全,三国杀语音代码大全

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 子建-子建- {3:44:1}有埋伏-啊!! {3:45:1}汉室衰弱,非我一人之罪 {3:46:1}大王,我先走一步了 {3:47:1}七纵之恩,来世再 ...

  9. html背景样式代码,12种纯CSS实现的背景图案样式代码

    这是使用纯css实现的背景图案样式,可以作用于任何元素甚至文本背景. 使用方法: 1使用NPM安装并下载pattern.css. 2导入pattern.css. 3.或在html文档中加载patter ...

最新文章

  1. 复旦邱锡鹏团队:Transformer最新综述!
  2. matlab中fdyn,Matlab的用法总结
  3. Python: 绝对导入 Absolute Imports
  4. 19个必须知道的Visual Studio快捷键
  5. GSON 循环引用的对象转为 JSON 造成栈溢出
  6. SQL——快速定位相关的外键表
  7. java 取随机正整数_Java获取随机数
  8. Linux根文件组织架构
  9. Android 应用开发(9)---内联复杂的XML资源
  10. java中关于线程的状态属性_深入理解Java多线程与并发框(第①篇)——线程的状态...
  11. oracle中的表怎样保存,怎样保存excel 表格数据库中-如何将excel表格更新oracle数据库中数据...
  12. pku1274 The Perfect Stall
  13. 傅里叶变换对照表_傅里叶分析推导
  14. 胶东机场t1离哪个停车场近,青岛胶东国际机场停车场攻略
  15. 代理记账公司能够为企业客户提供哪些服务
  16. 基于HTML5的电子病历编辑方法及系统与流程
  17. vsftp虚拟账户登录失败331 Please specify the password.
  18. No property creategoryType found for type xxx! Did you mean ‘xxx‘?
  19. python snmp
  20. 遇到问题了,找不到办法

热门文章

  1. 如何提高团队管理能力?
  2. 如何避免成为背锅侠?
  3. 华强北山寨“AirPods 3”出圈,油管博主直夸好
  4. SQL必知必会 - 创建表的联结
  5. 解密excel工作表打开密码
  6. 点清铸造厂车间除臭剂处理废气和废水恶臭
  7. Linux如何配置ssh key
  8. 气人!终于知道为什么华为手机删了照片,存储空间还是不足了!
  9. 【JavaScript】小数点精度问题,小数点后两位toFixed(),把四舍六入五凑偶,修改成四舍五入
  10. 利用RedisTemplate报错redis Invalid UTF-32 character 0x6a607661 (above 0x0010ffff) at char #8, byte #35)