样例未过,求调

· · 个人记录

三国杀

会更新

输入:

猪国杀基础上在身份后+武将名,在牌后+花色(1-4)+点数(1-13)


#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
const int sleep=1,sleeP=2000;
/*
更新日志:
20250122:加入花色点数
20250123:优化输出,加入许褚非裸衣不开决斗机制
20250124:优化输出(全中文),加入出牌顺序排序

bug样例
8 98
MP Zhangfei J 1 1 J 1 1 I 1 1 D 1 1 
ZP Zhaoyun K 1 1 D 1 1 K 1 1 B 1 1 
FP Luxun N 1 1 F 1 1 K 1 1 + 1 1 
ZP Zhaoyun I 1 1 P 1 1 I 1 1 D 1 1 
ZP Huangyueying P 1 1 K 1 1 G 1 1 J 1 1 
FP Lvmeng P 1 1 J 1 1 D 1 1 K 1 1 
FP Luxun I 1 1 I 1 1 D 1 1 K 1 1 
FP Lvmeng D 1 1 Y 1 1 T 1 1 K 1 1 
Q 1 1 V 1 1 D 1 1 D 1 1 K 1 1 K 1 1 D 1 1 C 1 1 J 1 1 C 1 1 K 1 1 S 1 1 K 1 1 - 1 1 K 1 1 X 1 1 K 1 1 P 1 1 I 1 1 F 1 1 I 1 1 Z 1 1 - 1 1 K 1 1 J 1 1 D 1 1 A 1 1 D 1 1 - 1 1 K 1 1 S 1 1 S 1 1 D 1 1 D 1 1 + 1 1 J 1 1 C 1 1 Z 1 1 D 1 1 K 1 1 F 1 1 P 1 1 Y 1 1 T 1 1 K 1 1 O 1 1 D 1 1 P 1 1 + 1 1 D 1 1 K 1 1 P 1 1 K 1 1 L 1 1 K 1 1 + 1 1 K 1 1 K 1 1 N 1 1 T 1 1 K 1 1 D 1 1 K 1 1 I 1 1 N 1 1 I 1 1 K 1 1 K 1 1 C 1 1 P 1 1 C 1 1 - 1 1 D 1 1 I 1 1 Y 1 1 C 1 1 D 1 1 K 1 1 P 1 1 K 1 1 K 1 1 K 1 1 K 1 1 I 1 1 K 1 1 P 1 1 S 1 1 Y 1 1 D 1 1 P 1 1 S 1 1 I 1 1 P 1 1 D 1 1 D 1 1 D 1 1 D 1 1 W 1 1 

花色
1 红桃
2 方块
3 黑桃
4 梅花

点数
1 A
2~10 对应数字
11 J
12 Q
13 K

武将:
白板 Baiban
赵云 Zhaoyun
曹操 Caocao
张飞 Zhangfei
黄月英 Huangyueying
吕蒙 Lvmeng
陆逊 Luxun
黄盖 Huanggai
许褚 Xuchu

未完成:
神曹操 Shencaocao
孙权 Sunquan
孙尚香 Sunshangxiang
刘备 Liubei
张辽 Zhangliao
吕布 Lvbu

牌:
    『桃 / P』
    『杀 / K』
    『闪 / D』
    『决斗 / F』
    『南蛮入侵 / N』
    『万箭齐发 / W』
    『无懈可击 / J』
    『无中生有 / Y』
    『顺手牵羊 / S』
    『过河拆桥 / C』
    『青釭剑 / Q』
    『古锭刀 / G』
    『进攻马 / -』
    『防御马 / +』
    『诸葛连弩 / Z』
    『青龙偃月刀 / L』
    『朱雀羽扇 / V』
    『麒麟弓 / O』
    『桃园结义 / A』
    『藤甲 / T』
    『火杀 / I』
    『雌雄双股剑 / X』
    『白银狮子 / B』
未完成:
    『方天画戟 / H』
    『五谷丰登 / U』
    『寒冰剑 / H』
    『酒 / E』
    『丈八蛇矛 / M』
    『贯石斧/ R』
    『乐不思蜀 / #』
    『兵粮寸断/ $』
    『闪电/ !』
    『八卦阵 / @』
    『仁王盾 / %』
    『火攻/ &』
    『铁索连环/ ^』
*/
inline void guixin(int id);
int lianpo;
string HUA_SE[5]={" ","红桃","方块","黑桃","梅花"},DIAN_SHU[15]={" ","A","2","3","4","5","6","7","8","9","10","J","Q","K"};
struct N{
    string p;
    int hs,ds,num;
    void out(){ 
        string pp;
        if(p=="K")pp="杀";
        else if(p=="I")pp="火杀";
        else if(p=="P")pp="桃";
        else if(p=="Q")pp="青釭剑";
        else if(p=="G")pp="古锭刀";
        else if(p=="A")pp="桃园结义";
        else if(p=="B")pp="白银狮子";
        else if(p=="C")pp="过河拆桥";
        else if(p=="S")pp="顺手牵羊";
        else if(p=="D")pp="闪";
        else if(p=="F")pp="决斗";
        else if(p=="H")pp="方天画戟";
        else if(p=="J")pp="无懈可击";
        else if(p=="L")pp="青龙偃月刀";
        else if(p=="N")pp="南蛮入侵";
        else if(p=="O")pp="麒麟弓";
        else if(p=="T")pp="藤甲";
        else if(p=="U")pp="五谷丰登";
        else if(p=="V")pp="朱雀羽扇";
        else if(p=="W")pp="万箭齐发";
        else if(p=="X")pp="雌雄双股剑";
        else if(p=="Y")pp="无中生有";
        else if(p=="Z")pp="诸葛连弩";
        else if(p=="-")pp="进攻马";
        else if(p=="+")pp="防御马";
        cout<<HUA_SE[hs]<<DIAN_SHU[ds]<<" "<<pp<<" ";}
    N& operator=(const string &o)
    {   if(o==" ")  return *this=(N){" ",0,0,0};
        else    exit(0);
    }
    bool operator ==(const string &o){  return p==o;};
    bool operator !=(const string &o){  return p!=o;};
}   t,pai_dui[2001];
struct mode{
    bool dead;
    bool yanyuedao;
    int to;
    N jing_gong_ma,fang_yu_ma;
    bool sex;
    N weapon;
    N fangju;
    int use_tao;
    int fan_wei;
    int HP;
    int HP_limit;
    int shen_fen;//0: 无 1:主 2:忠 3:反 4:类反
    int fanmian;
    string op;
    string name;
    vector<N>pai;
}a[2010];
bool W=0;
int n,m,mm;
bool keji,luoyi;
int zisha;
void SetColorAndBackground(int ForgC, int BackC) {
    WORD wColor=((BackC & 0x0F)<<4)+(ForgC&0x0F);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),wColor);
}
inline void print(int id,int card){//1:回合始末 2:杀他人或被拆/顺 3:掉血
    if(card==1) cout <<id<<"号位跳的身份:"<<a[id].shen_fen<<'\n';
    if(card==2) cout <<id<<"号位的装备:",a[id].weapon.out(),a[id].fangju.out(),a[id].jing_gong_ma.out(),a[id].fang_yu_ma.out(),cout<<'\n';
    if(card==2) cout <<id<<"号位的攻击距离:"<<a[id].fan_wei<<'\n';
    cout <<id<<"号位的血量:"<<a[id].HP<<'\n';
    cout <<id<<"号位的手牌:"<<'\n';
    int cnt=0;
    for(int i=0;i<(int)a[id].pai.size();i++) if(a[id].pai[i]!=" ") a[id].pai[i].out(),cout <<',',cnt++;
    cout <<"共"<<cnt<<"张\n";
    Sleep(sleep/2);
}
inline void get(N &x){
    if(x.p=="C") x.num=1;
    if(x.p=="S") x.num=2;
    if(x.p=="N") x.num=3;
    if(x.p=="W") x.num=4;
    if(x.p=="Y") x.num=5;
    if(x.p=="F") x.num=6;
    if(x.p=="A") x.num=7;
    if(x.p=="B") x.num=8;
    if(x.p=="T") x.num=9;
    if(x.p=="L"||x.p=="O"||x.p=="V"||x.p=="X"||x.p=="G"||x.p=="Q") x.num=10;
    if(x.p=="P") x.num=11;
    if(x.p=="D") x.num=12;
    if(x.p=="J") x.num=13;
    if(x.p=="I") x.num=14;
    if(x.p=="Z") x.num=15;
    if(x.p=="K") x.num=16;
}
inline void qi_pai(int id){
    int sum=a[id].HP,cntt=a[id].pai.size();
    for(int i=0;i<cntt;i++){
        if(a[id].pai[i]!=" "&&sum) sum--;
        else a[id].pai[i]=" ";
    }
}
inline void out(){
    Sleep(sleep/2);
    W?cout <<"MP\n":cout <<"FP\n";
    for(int i=1;i<=n;i++){
        cout <<a[i].op<<' '<<a[i].name<<'\n';
        if(a[i].dead) cout <<"DEAD";
        else{
            //for(int j=0;j<(int)a[i].pai.size();j++) if(a[i].pai[j]!=" ") a[i].pai[j].out(),cout<<' ';
            print(i,2);
            cout <<"剩余体力:"<<a[i].HP;
        }
        cout <<"\n\n";
    }
    exit(0);
}
inline void mo_pai(int id,int sum){
    for(int i=1;i<=sum;i++){
        a[id].pai.push_back(pai_dui[m]);
        m--;if(!m) m=mm;
    }
}
inline bool Find_pai(int id){
    for(int i=0;i<(int)a[id].pai.size();i++) if(a[id].pai[i]!=" ") return 1;
    return 0;
}
inline bool Find_I(int id){
    for(int i=0;i<(int)a[id].pai.size();i++) if(a[id].pai[i]=="I") return 1;
    return 0;
}
inline int Tao(int id){
    int aaa=0;
    for(int i=0;i<(int)a[id].pai.size();i++) if(a[id].pai[i]=="P") aaa++;
    return aaa;
}
void lian_ying(int id){
    if(!Find_pai(id)){
        Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用连营\n";
        mo_pai(id,1);
        print(id,0);
    }
}
inline bool win(){
    bool w=1;
    for(int i=1;i<=n;i++) if(a[i].op=="FP") w&=a[i].dead;
    return w;
}
inline int dis(int id){
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(!a[i].dead) return i;
    }
}
inline bool suo_di(int id,int sf,bool sha){
    if(a[id].op=="MP"&&(sf==3||sf==4)&&(sha||a[id].weapon=="Z"||a[id].name=="Zhangfei")) return 1;
    if(a[id].op=="ZP"&&(sf==3)&&(sha||a[id].weapon=="Z"||a[id].name=="Zhangfei")) return 1;
    if(a[id].op=="FP"&&(sf==1||sf==2)&&(sha||a[id].weapon=="Z"||a[id].name=="Zhangfei")) return 1;
    if(!sf&&(sha||a[id].weapon=="Z"||a[id].name=="Zhangfei")) return 1;
    return 0;
}
inline void jie_suan(int k,int bk){
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"击杀了"<<bk<<"号位"<<a[bk].op<<"\n";
    if(a[bk].op=="FP") mo_pai(k,3);
    if(a[k].op=="MP"&&a[bk].op=="ZP"){
        a[k].pai.clear();
        if(a[k].name=="Luxun") lian_ying(k);
        a[k].weapon=" ";a[k].fan_wei=1;
    }
}
inline void Find_tao(int u,int bu){
    for(int i=0;i<(int)a[u].pai.size();i++){
        string x=a[u].pai[i].p;
        if(x=="P"){
            a[u].pai[i]=" ";
            if(a[u].name=="Luxun") lian_ying(u);
            a[bu].HP++;a[u].use_tao++;
            if(a[bu].op=="MP") if(a[u].op!="MP") a[u].shen_fen=2;
            if(a[bu].shen_fen==3) a[u].shen_fen=3;
            Sleep(sleep/2),cout <<u<<"号位"<<a[u].op<<"使用一张桃回复"<<bu<<"号位"<<a[bu].op<<"一点体力\n";
            if(a[u].use_tao==3){
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
                cout<<"\n====================\n------医术高超------\n====================\n\n";
                Sleep(sleeP);
                SetColorAndBackground(15,0);
                a[u].use_tao=0;
            }
            if(a[bu].HP>0) return;
        }
    }
}
inline void bin_si(int k,int bk){
    bool f=0;
    for(int i=bk;;i++){
        if(i==n+1) i=1;
        if(i==bk&&f) break;
        if((bk==1&&i==1)||((bk==1||bk==i)&&a[i].op=="ZP")||(a[bk].shen_fen==3&&a[i].op=="FP")||i==bk) Find_tao(i,bk);
        f=1;
        if(a[bk].HP>0) return;
    }
    a[bk].dead=1;
    lianpo++;
    if(zisha==0){
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
        if(lianpo==1) Sleep(sleep/2),cout<<"\n====================\n---一破·卧龙出山---\n====================\n\n";
        else if(lianpo==2) Sleep(sleep/2),cout<<"\n====================\n---双连·一战成名---\n====================\n\n";
        else if(lianpo==3) Sleep(sleep/2),cout<<"\n====================\n---三连·举世皆惊---\n====================\n\n";
        else if(lianpo==4) Sleep(sleep/2),cout<<"\n====================\n---四连·天下无敌---\n====================\n\n";
        else if(lianpo==5) Sleep(sleep/2),cout<<"\n====================\n---五连·诛天灭地---\n====================\n\n";
        else if(lianpo==6) Sleep(sleep/2),cout<<"\n====================\n---六连·诛天灭地---\n====================\n\n";
        else if(lianpo==7) Sleep(sleep/2),cout<<"\n====================\n---七连·诛天灭地---\n====================\n\n";
        else if(lianpo==8) Sleep(sleep/2),cout<<"\n====================\n---八连·诛天灭地---\n====================\n\n";
        else if(lianpo==9) Sleep(sleep/2),cout<<"\n====================\n---九连·诛天灭地---\n====================\n\n";
        else if(lianpo==10) Sleep(sleep/2),cout<<"\n====================\n---十连·诛天灭地---\n====================\n\n";
        else Sleep(sleep/2),cout<<"\n====================\n---"<<lianpo<<"连·诛天灭地---\n====================\n\n";
        SetColorAndBackground(15,0);
        Sleep(sleeP);
    }
    zisha=0;
    if(a[bk].op=="MP") out();
    if(win()) W=1,out();
    jie_suan(k,bk);
}
inline bool Find_wu_xie(int u,int bu,bool now){
    if(a[u].dead) return 0;
    for(int i=0;i<(int)a[u].pai.size();i++){
        string x=a[u].pai[i].p;
        if(x=="J"){
            a[u].pai[i]=" ";
            if(a[u].name=="Luxun") lian_ying(u);
            if((a[bu].shen_fen==3&&now)||((a[bu].shen_fen==2||a[bu].op=="MP")&&!now)) a[u].shen_fen=3;
            if(((a[bu].op=="MP"||a[bu].shen_fen==2)&&now)||(a[bu].shen_fen==3&&!now)) if(a[u].op!="MP") a[u].shen_fen=2;
            Sleep(sleep/2),cout <<u<<"号位"<<a[u].op<<"打出了无懈可击\n";
            if(a[u].name=="Huangyueying") Sleep(sleep/2),cout<<u<<"号位"<<a[u].op<<"使用集智\n",mo_pai(u,1),print(u,0);
            return 1;
        }
    }
    return 0;
}
inline bool wu_xie(int k,int bk){
    bool useful=1;
    while(1){
        bool f=0,U=0;
        for(int i=k;;i++){
            if(i==n+1) i=1;
            if(i==k&&f) break;
            f=1;
            if(i==bk&&k==bk&&!useful) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(i==bk&&k!=bk&&useful) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].shen_fen==3&&a[i].op=="FP"&&((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].op=="MP"&&(a[i].op=="ZP"||a[i].op=="MP")&&((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].shen_fen==2&&(a[i].op=="ZP"||a[i].op=="MP")&&((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].shen_fen==3&&(a[i].op=="ZP"||a[i].op=="MP")&&!((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].op=="MP"&&a[i].op=="FP"&&!((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].shen_fen==2&&a[i].op=="FP"&&!((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
            if(a[bk].shen_fen==4&&a[i].op=="MP"&&!((k!=bk&&useful)||(k==bk&&!useful))) if(Find_wu_xie(i,bk,useful^(k==bk))) useful^=1,U=1;
        }
        if(!U) break;
    }
    return useful;
}
inline void tao_yuan(int id){
    bool f=0;
    for(int i=id;;i++){
        if(i==n+1) i=1;
        if(i==id&&f) break;
        f=1;
        if(a[i].HP==a[i].HP_limit||a[i].dead) continue;
        if(!wu_xie(i,i)) continue;
        a[i].HP++;
        Sleep(sleep/2),cout <<i<<"号位"<<a[i].op<<"回复了一点体力\n";
    }
}
inline void wu_zhong(int id){
    Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用了一张无中生有\n";
    if(a[id].name=="Huangyueying") Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"使用集智\n",mo_pai(id,1),print(id,0);
    if(!wu_xie(id,id)) return ;
    mo_pai(id,2);
    print(id,0);
}
inline void xiang_ying(int k,int bk,N shapai){
    a[k].yanyuedao=0;
    if(a[k].weapon=="X"&&(a[k].sex^a[bk].sex)){
        int sh=0,flfl=0;
        Sleep(sleep/2),cout <<"雌雄双股剑效果被触发,";
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if((x=="K"||x=="I")||(x=="D"&&sh>0)){
                a[bk].pai[i]=" ";
                Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"弃置一张"<<x<<"\n";
                print(bk,4);
                flfl=1;
                break;
            }
            if(x=="D")sh++;
        }
        if(flfl==0){
            Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"摸一张牌"<<"\n";
            mo_pai(k,1);
            print(k,4);
        }
    }
    if(a[bk].name!="Shencaocao"||Tao(bk)+a[bk].HP==1){
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if((x=="D")||((x=="K"||x=="I")&&a[bk].name=="Zhaoyun")){
                if(x=="K") Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"使用龙胆\n";
                a[bk].pai[i]=" ";
                if(a[bk].name=="Luxun") lian_ying(bk);
                Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"使用了闪\n";
                if(!a[k].to) a[k].to=bk;
                if(bk==a[k].to&&a[k].weapon=="L") a[k].yanyuedao=1;
                return;
            }
        }
    }

    int shanghai=luoyi+1;
    if(luoyi) Sleep(sleep/2),cout <<"裸衣技能生效,伤害+1\n";
    if(a[k].weapon=="Q"&&a[bk].fangju=="T") Sleep(sleep/2),cout <<"青釭剑效果被触发,";
    if(a[k].weapon=="G"&&!Find_pai(bk)) Sleep(sleep/2),cout <<"古锭刀效果被触发,伤害+1\n",shanghai++;
    if((a[k].weapon=="V"||shapai=="I")&&a[bk].fangju=="T"&&a[k].weapon!="Q") Sleep(sleep/2),cout <<"藤甲效果被触发,火焰伤害+1\n",shanghai++;
    if(a[k].weapon=="O"){
        if(a[bk].fang_yu_ma.p=="+"){
            a[bk].fang_yu_ma=0;
            Sleep(sleep/2),cout <<"麒麟弓效果被触发,"<<bk<<"号位"<<a[bk].op<<"失去了防御马\n";
        }
        else if(a[bk].jing_gong_ma.p=="-"){
            a[bk].jing_gong_ma=0;
            Sleep(sleep/2),cout <<"麒麟弓效果被触发,"<<bk<<"号位"<<a[bk].op<<"失去了进攻马\n";
        }
    }
    if(a[bk].fangju=="B"&&shanghai>1){
        Sleep(sleep/2),cout <<"白银狮子生效,伤害变为1\n";
        shanghai=1;
    }
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"造成了"<<shanghai<<"点伤害\n";
    if(shanghai==3){
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
        cout<<"\n====================\n------疯狂屠戮------\n====================\n\n";
        Sleep(sleeP);
        SetColorAndBackground(15,0);
    }
    else if(shanghai>=4){
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
        cout<<"\n====================\n---无双·万军取首---\n====================\n\n";
        Sleep(sleeP);
        SetColorAndBackground(15,0);
    }
    a[bk].HP-=shanghai;
    if(a[bk].HP<=0) bin_si(k,bk);
    if(a[bk].name=="Caocao"&&!a[bk].dead){
        print(bk,3);
        Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"发动奸雄\n";
        a[bk].pai.push_back(shapai);
        print(bk,3);
    }
    if(a[bk].name=="Shencaocao"&&!a[bk].dead) while(shanghai--) guixin(bk);
}
inline void Kill(int k,int bk,int pos,N shapai){
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"使用了";
    if(shapai=="I") cout<<"火"; 
    cout <<"杀\n";
    a[k].pai[pos]=" ";
    if(a[k].name=="Luxun") lian_ying(k);
    if(a[bk].op=="MP"||a[bk].shen_fen==2) if(a[k].op!="MP") a[k].shen_fen=3;
    if(a[bk].op=="FP"&&a[k].op=="ZP") a[k].shen_fen=2;
    xiang_ying(k,bk,shapai);
}
inline void jue_dou(int k,int bk,int pos){
    t=a[k].pai[pos],a[k].pai[pos]=" ";
    if(a[k].name=="Luxun") lian_ying(k);
    if(a[bk].op=="MP"||(a[bk].shen_fen==2&&a[k].op!="MP")) a[k].shen_fen=3;
    if(a[bk].shen_fen==3&&a[k].op=="ZP") a[k].shen_fen=2;
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"使用了决斗\n";
    if(a[k].name=="Huangyueying") Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"使用集智\n",mo_pai(k,1),print(k,0);
    if(!wu_xie(k,bk)){
        Sleep(sleep/2),cout <<"决斗失效\n";
        return;
    }
    if(a[k].op=="MP"&&a[bk].op=="ZP"){
        bool ff=luoyi;
        if(luoyi) Sleep(sleep/2),cout <<"裸衣技能生效,伤害+1\n";
        if(a[bk].fangju=="B"&&luoyi){
            Sleep(sleep/2),cout <<"白银狮子生效,伤害变为1\n";
            luoyi=0;
        }
        a[bk].HP-=1+luoyi;
        Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"造成了"<<1+luoyi<<"点伤害\n";
        if(a[bk].HP<=0) bin_si(k,bk);
        if(a[bk].name=="Caocao"&&!a[bk].dead){
            print(bk,3);
            Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"发动奸雄\n";
            a[bk].pai.push_back(t);
            print(bk,3);
        }
        if(a[bk].name=="Shencaocao"&&!a[bk].dead){
            int cishu=1+luoyi;
            while(cishu--) guixin(bk);
        }
        luoyi=ff;
        return ;
    }
    int tmp1=0,tmp2=0;
    bool kill=1;
    int sum1=a[k].pai.size(),sum2=a[bk].pai.size();
    while(tmp1<=sum1&&tmp2<=sum2){
        if(kill){
            if(tmp2>=sum2) break;
            if(a[bk].name!="Shencaocao"||Tao(bk)+a[bk].HP==1)
            {
                if(a[bk].pai[tmp2]=="K"||a[bk].pai[tmp2]=="I"||(a[bk].pai[tmp2]=="D"&&a[bk].name=="Zhaoyun")){
                    if(a[bk].pai[tmp2]=="D") Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"使用龙胆\n";
                    a[bk].pai[tmp2]=" ",kill^=1;
                    if(a[bk].name=="Luxun") lian_ying(bk);
                    Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"使用了杀\n";
                }
                tmp2++;
            }

        }
        else{
            if(tmp1>=sum1) break;
            if(a[bk].name!="Shencaocao"||Tao(bk)+a[bk].HP==1){
                if(a[k].pai[tmp1]=="K"||a[k].pai[tmp1]=="I"||(a[k].pai[tmp1]=="D"&&a[k].name=="Zhaoyun")){
                    if(a[k].pai[tmp1]=="D") Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"使用龙胆\n";
                    a[k].pai[tmp1]=" ",kill^=1;
                    if(a[k].name=="Luxun") lian_ying(k);
                    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"使用了杀\n";
                }
                tmp1++;
            }

        }
    }
    if(kill){
        bool ff=luoyi;
        if(luoyi) Sleep(sleep/2),cout <<"裸衣技能生效,伤害+1\n";
        if(a[bk].fangju=="B"&&luoyi){
            Sleep(sleep/2),cout <<"白银狮子生效,伤害变为1\n";
            luoyi=0;
        }
        a[bk].HP-=1+luoyi;
        Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"造成了"<<1+luoyi<<"点伤害\n";
        if(a[bk].HP<=0) bin_si(k,bk);
        if(a[bk].name=="Caocao"&&!a[bk].dead){
            print(bk,3);
            Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"发动奸雄\n";
            a[bk].pai.push_back(t);
            print(bk,3);
        }
        if(a[bk].name=="Shencaocao"&&!a[bk].dead){
            int cishu=1+luoyi;
            while(cishu--) guixin(bk);
        }
        luoyi=ff;
    }
    else{
        bool ff=luoyi;
        if(luoyi) Sleep(sleep/2),cout <<"裸衣技能生效,伤害+1\n";
        if(a[bk].fangju=="B"&&luoyi){
            Sleep(sleep/2),cout <<"白银狮子生效,伤害变为1\n";
            luoyi=0;
        }
        a[k].HP-=1+luoyi;
        Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"对"<<k<<"号位"<<a[k].op<<"造成了"<<1+luoyi<<"点伤害\n";
        if(a[k].HP<=0) zisha=1,bin_si(bk,k);
        if(a[k].name=="Caocao"&&!a[k].dead){
            print(k,3);
            Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"发动奸雄\n";
            a[k].pai.push_back(t);
            print(k,3);
        }
        if(a[k].name=="Shencaocao"&&!a[k].dead){
            int cishu=1+luoyi;
            while(cishu--) guixin(bk);
        }
        luoyi=ff;
    }
}
inline void Find_jue_dou(int id,int pos){
    if(a[id].op=="FP"){jue_dou(id,1,pos);return;}
    bool use=1;
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(i==id||!use) break;
        if(!a[i].dead){
            if(!a[i].shen_fen) jue_dou(id,i,pos),use=0;
            if(a[id].op=="MP"&&(a[i].shen_fen==3||a[i].shen_fen==4)&&use) jue_dou(id,i,pos),use=0;
            if(a[id].op=="ZP"&&a[i].shen_fen==3&&use) jue_dou(id,i,pos),use=0;
        }
    }
}
inline void shun_qian(int k,int bk,int pos){
    if(pos!=-1) a[k].pai[pos]=" ";
    if(a[k].name=="Luxun") lian_ying(k);
    if(pos!=-1) Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"使用了顺手牵羊\n";
    if(a[k].name=="Huangyueying") Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"使用集智\n",mo_pai(k,1),print(k,0);
    if(pos!=-1) if(!wu_xie(k,bk)) return ;
    if(pos!=-1) print(k,2),print(bk,2);
    if(a[bk].fangju=="B"&&a[k].name=="Xuchu"){
        a[k].pai.push_back(a[bk].fangju),a[bk].fangju=" ";
        a[bk].HP=min(a[bk].HP+1,a[bk].HP_limit);
        Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"失去了白银狮子,体力+1\n";
    }
    if(a[bk].fangju=="T"&&a[k].weapon!="V"&&!Find_I(k)) a[k].pai.push_back(a[bk].fangju),a[bk].fangju=" ";
    else if(a[bk].weapon=="Z")  a[bk].fan_wei=1,a[k].pai.push_back(a[bk].weapon),a[bk].weapon=" ";
    else if(a[bk].fang_yu_ma=="+")  a[k].pai.push_back(a[bk].fang_yu_ma),a[bk].fang_yu_ma=" ";
    else if(a[bk].jing_gong_ma=="-") a[k].pai.push_back(a[bk].jing_gong_ma),a[bk].jing_gong_ma=" ";
    else if(a[bk].weapon!=" ") a[k].pai.push_back(a[bk].weapon),a[bk].weapon=" ",a[bk].fan_wei=1;
    else if(a[bk].fangju=="B"){
        a[k].pai.push_back(a[bk].fangju),a[bk].fangju=" ";
        a[bk].HP=min(a[bk].HP+1,a[bk].HP_limit);
        Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"失去了白银狮子,体力+1\n";
    }
    else{
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if(x!=" "){
                a[k].pai.push_back(a[bk].pai[i]),a[bk].pai[i]=" ";
                break;
            }
        }
    }
    if(pos!=-1) print(k,2),print(bk,2);
}
inline void guo_chai(int k,int bk,int pos){
    a[k].pai[pos]=" ";
    if(a[k].name=="Luxun") lian_ying(k);
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"使用了过河拆桥\n";
    if(a[k].name=="Huangyueying") Sleep(sleep/2),cout<<k<<"号位"<<a[k].op<<"使用集智\n",mo_pai(k,1),print(k,0);
    if(!wu_xie(k,bk)) return ;
    print(bk,2);
    if(a[bk].fangju=="B"&&a[k].name=="Xuchu"){
        a[bk].fangju=" ";
        a[bk].HP=min(a[bk].HP+1,a[bk].HP_limit);
        Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"失去了白银狮子,体力+1\n";
    }
    else if(a[bk].fangju=="T"&&a[k].weapon!="V"&&!Find_I(k)) a[bk].fangju=" ";
    else if(a[bk].weapon=="Z") a[bk].weapon=" ",a[bk].fan_wei=1;
    else if(a[bk].fang_yu_ma.p!=" ") a[bk].fang_yu_ma=" ";
    else if(a[bk].jing_gong_ma!=" ") a[bk].jing_gong_ma=" ";
    else if(a[bk].weapon!=" ") a[bk].weapon=" ",a[bk].fan_wei=1;
    else if(a[bk].fangju=="B"){
        a[bk].fangju=" ";
        a[bk].HP=min(a[bk].HP+1,a[bk].HP_limit);
        Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"失去了白银狮子,体力+1\n";
    }
    else{
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if(x!=" "){
                a[bk].pai[i]=" ";
                if(a[bk].name=="Luxun") lian_ying(bk);
                break;
            }
        }
    }
    print(bk,2);
}
inline void Find_guo_chai(int id,int pos){
    if(a[id].op=="FP") if(Find_pai(1)||a[1].weapon!=" "){guo_chai(id,1,pos);return;}
    bool use=1;
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(i==id||!use) break;
        if(!a[i].dead){
            if(a[id].op=="MP"&&(a[i].shen_fen==3||a[i].shen_fen==4)&&use&&Find_pai(i)) guo_chai(id,i,pos),use=0;
            if(a[id].op=="ZP"&&a[i].shen_fen==3&&use&&Find_pai(i)) guo_chai(id,i,pos),use=0;
            if(a[id].op=="FP"&&a[i].shen_fen==2) guo_chai(id,i,pos),use=0;
        }
    }
}
inline void Find_shun_qian(int id,int pos){
    if(a[id].op=="FP") if(a[1].op!="Luxun"&&(Find_pai(1)||a[1].weapon!=" ")){shun_qian(id,1,pos);return;}
    bool use=1;
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(i==id||!use) break;
        if(!a[i].dead){
            if(a[i].op!="Luxun"&&a[id].op=="MP"&&(a[i].shen_fen==3||a[i].shen_fen==4)&&use&&Find_pai(i)) shun_qian(id,i,pos),use=0;
            if(a[i].op!="Luxun"&&a[id].op=="ZP"&&a[i].shen_fen==3&&use&&Find_pai(i)) shun_qian(id,i,pos),use=0;
            if(a[i].op!="Luxun"&&a[id].op=="FP"&&a[i].shen_fen==2) shun_qian(id,i,pos),use=0;
        }
    }
}
inline void guixin(int id){
    a[id].fanmian^=1;
    cout<<id<<"号位发动归心\n";
    Sleep(sleep);
    for(int i=1;i<=n;i++){
        if(a[i].dead||i==id) continue;
        if(Find_pai(i)||a[i].fangju!=" "||a[i].weapon!=" ") shun_qian(id,i,-1);
    }
    print(id,0);
    Sleep(sleeP);
}
inline void shan(int k,int bk,N shapai){
    if(a[bk].name!="Shencaocao"||Tao(bk)+a[bk].HP==1)
    {
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if(x=="D"||((x=="K"||x=="I")&&a[bk].name=="Zhaoyun")){
                if(x=="K") Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"使用龙胆\n";
                a[bk].pai[i]=" ";
                if(a[bk].name=="Luxun") lian_ying(bk);
                Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"使用了闪\n";
                return;
            }
        }
    }

    a[bk].HP--;
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"造成了一点伤害\n";
    if(a[bk].op=="MP"&&(!a[k].shen_fen)) a[k].shen_fen=4;
    if(!a[bk].HP) bin_si(k,bk);
    if(a[bk].name=="Caocao"&&!a[bk].dead){
        print(bk,3);
        Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"发动奸雄\n";
        a[bk].pai.push_back(shapai);
        print(bk,3);
    }
    if(a[bk].name=="Shencaocao"&&!a[bk].dead) guixin(bk);
}
inline void fang_jian(int id,N shapai){
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(i==id) break;
        if(a[i].dead) continue;
        if(a[i].fangju=="T"){
            cout <<i<<"号位"<<a[i].op<<"藤甲效果被触发,万箭对其无效\n";
            continue;
        }
        if(!wu_xie(id,i)) continue;
        shan(id,i,shapai);
    }
}
inline void sha(int k,int bk,N shapai){
    if(a[bk].name!="Shencaocao"||Tao(bk)+a[bk].HP==1){
        for(int i=0;i<(int)a[bk].pai.size();i++){
            string x=a[bk].pai[i].p;
            if(x=="I"||x=="K"||(x=="D"&&a[bk].name=="Zhaoyun")){
                if(x=="D") Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"使用龙胆\n";
                a[bk].pai[i]=" ";
                if(a[bk].name=="Luxun") lian_ying(bk);
                Sleep(sleep/2),cout <<bk<<"号位"<<a[bk].op<<"使用了杀\n";
                return;
            }
        }
    }
    a[bk].HP--;
    Sleep(sleep/2),cout <<k<<"号位"<<a[k].op<<"对"<<bk<<"号位"<<a[bk].op<<"造成了一点伤害\n";
    if(a[bk].op=="MP"&&(!a[k].shen_fen)) a[k].shen_fen=4;
    if(!a[bk].HP) bin_si(k,bk);
    if(a[bk].name=="Caocao"&&!a[bk].dead){
        print(bk,3);
        Sleep(sleep/2),cout<<bk<<"号位"<<a[bk].op<<"发动奸雄\n";
        a[bk].pai.push_back(shapai);
        print(bk,3);
    }
    if(a[bk].name=="Shencaocao"&&!a[bk].dead) guixin(bk);
}
inline void nan_man(int id,N shapai){
    for(int i=id+1;;i++){
        if(i==n+1) i=1;
        if(i==id) break;
        if(a[i].dead) continue;
        if(a[i].fangju=="T"){
            cout <<i<<"号位"<<a[i].op<<"藤甲效果被触发,南蛮对其无效\n";
            continue;
        }
        if(!wu_xie(id,i)) continue;
        sha(id,i,shapai);
    }
}
inline int hurt(int id){
    int cnt1=0,cnt2=0;
    for(int i=0;i<(int)a[id].pai.size();i++){
        if(a[id].pai[i]=="F") cnt1++;
        if(a[id].pai[i]=="K"||a[id].pai[i]=="I") cnt2++;
    }
    if(cnt2){
        cnt2=a[id].weapon=="Z"?cnt2:1;
        if(a[id].name=="Xuchu") cnt2=a[id].weapon=="L"?cnt2:1;
    }
    return cnt1+cnt2;
}
inline bool cmp(N p,N q){return p.num<q.num;}
inline void use(int id){
    print(id,1);
    lianpo=a[id].to=0;
    bool sha=1;keji=1;
    if(a[id].name=="Lvmeng"&&hurt(id)>=4) keji=0;
    while(1){
        bool U=0,UU=0;int sum=a[id].pai.size();
        if(a[id].name=="Huanggai"){
            int tt=a[id].HP;
            if(a[id].weapon=="Z") tt++;
            tt=max(0,tt-2);
            for(int i=1;i<=tt;i++){
                a[id].HP--;
                Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"发动苦肉\n";
                mo_pai(id,2);
            }
        }
        sort(a[id].pai.begin(),a[id].pai.end(),cmp);
        for(int i=0;i<sum;i++){
            string P=a[id].pai[i].p;
            if(P==" ") continue;
            if(P=="+"){
                t=a[id].pai[i],a[id].pai[i]=" ",a[id].fang_yu_ma=t;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了防御马\n";
            }
            if(P=="-"){
                t=a[id].pai[i],a[id].pai[i]=" ",a[id].jing_gong_ma=t;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了进攻马\n";
            }
            if(P=="T"){
                if(a[id].fangju=="B"){
                    a[id].HP=min(a[id].HP+1,a[id].HP_limit);
                    Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"失去了白银狮子,体力+1\n";
                }
                a[id].fangju=a[id].pai[i],a[id].pai[i]=" ";
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了藤甲\n";
            }
            if(P=="B"){
                if(a[id].fangju=="B"){
                    a[id].HP=min(a[id].HP+1,a[id].HP_limit);
                    Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"失去了白银狮子,体力+1\n";
                }
                a[id].fangju=a[id].pai[i],a[id].pai[i]=" ";
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了白银狮子\n";
            }
            if(P=="Z"){
                t=a[id].pai[i];
                if(a[id].name=="Zhangfei") a[id].pai.push_back(t),UU=1,a[id].pai[i]=" ";
                else{
                    a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=1;
                    if(a[id].name=="Luxun") lian_ying(id);
                    Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了诸葛连弩\n";
                }   
            }
            if(P=="Q"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=2;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了青釭剑\n";
            }
            if(P=="G"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=2;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了古锭刀\n";
            }
            if(P=="L"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=3;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了青龙偃月刀\n";
            }
            if(P=="V"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=4;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了朱雀羽扇\n";
            }
            if(P=="O"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=5;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了麒麟弓\n";
            }
            if(P=="X"&&a[id].weapon!="Z"){
                a[id].weapon=a[id].pai[i],a[id].pai[i]=" ",a[id].fan_wei=2;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"装上了雌雄双股剑\n";
            }
            if(P=="P"&&a[id].HP!=a[id].HP_limit){
                a[id].HP++,a[id].pai[i]=" ",a[id].use_tao++;
                if(a[id].name=="Luxun") lian_ying(id);
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用一张桃回复自己一点体力\n";
                if(a[id].use_tao==3){
                    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
                    cout<<"\n====================\n------医术高超------\n====================\n\n";
                    SetColorAndBackground(15,0);
                    a[id].use_tao=0;
                    Sleep(sleeP);
                }
            }
            if(P=="K"||P=="I"||(P=="D"&&a[id].name=="Zhaoyun")){
                if(a[id].name=="Lvmeng"&&keji) continue;
                int x=id;
                for(int j=1;j<=a[id].fan_wei+(a[id].jing_gong_ma!=" ");j++){
                    x=dis(x);int sf=a[x].shen_fen;
                    if(x==id) break;
                    t=a[id].pai[i];
                    if(suo_di(id,sf,sha|a[id].yanyuedao)&&j-(a[id].jing_gong_ma!=" ")+(a[x].fang_yu_ma!=" ")<=a[id].fan_wei&&(a[x].fangju!="T"||a[id].weapon=="V"||a[id].weapon=="Q"||P=="I")){
                        if(P=="D"){
                            Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"使用龙胆\n";
                            if(a[id].yanyuedao==1&&!sha) Sleep(sleep/2),cout<<"青龙偃月刀效果被触发,";
                            Kill(id,x,i,t),sha=0;
                            break;
                        }
                        else{
                            if(a[id].name=="Zhangfei"&&sha==0) Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"发动咆哮\n";
                            if(a[id].yanyuedao==1&&!sha) Sleep(sleep/2),cout<<"青龙偃月刀效果被触发,";
                            Kill(id,x,i,t),sha=0;
                            break;
                        }
                    }
                }
            }
            if(P=="F"){
                if(a[id].name=="Lvmeng"&&keji||a[id].name=="Xuchu"&&luoyi==0) continue;
                Find_jue_dou(id,i);
                if(a[id].dead) return;
            }
            if(P=="N"){
                if(a[id].op=="ZP"&&a[1].HP==1&&!Tao(id)&&a[1].fangju!="T") continue;
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用一张南蛮\n";
                t=a[id].pai[i],a[id].pai[i]=" ";
                if(a[id].name=="Luxun") lian_ying(id);
                if(a[id].name=="Huangyueying") Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"使用集智\n",mo_pai(id,1),print(id,0);
                nan_man(id,t);
            }
            if(P=="W"){
                if(a[id].op=="ZP"&&a[1].HP==1&&!Tao(id)&&a[1].fangju!="T") continue;
                Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用一张万箭\n";
                t=a[id].pai[i],a[id].pai[i]=" ";
                if(a[id].name=="Luxun") lian_ying(id);
                if(a[id].name=="Huangyueying") Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"使用集智\n",mo_pai(id,1),print(id,0);
                fang_jian(id,t);
            }
            if(P=="Y"){
                a[id].pai[i]=" ";
                if(a[id].name=="Luxun") lian_ying(id);
                wu_zhong(id);
            }
            if(P=="S"){
                if(a[id].name=="Huangyueying") Find_shun_qian(id,i);
                else{
                    int x=dis(id),sf=a[x].shen_fen;
                    if(a[x].op!="Luxun"&&suo_di(id,sf,1)&&(a[id].jing_gong_ma!=" ")-(a[id].fang_yu_ma!=" ")>=0) shun_qian(id,x,i);
                    else if(a[id].jing_gong_ma!=" "){
                        x=dis(x),sf=a[x].shen_fen;
                        if(a[x].op!="Luxun"&&suo_di(id,sf,1)&&(a[id].fang_yu_ma==" ")) shun_qian(id,x,i);
                    }
                }
            }
            if(P=="C") Find_guo_chai(id,i);
            if(P=="A"){
                if(a[id].name=="Huangyueying"||a[id].HP!=a[id].HP_limit){
                    a[id].pai[i]=" ";
                    cout <<id<<"号位"<<a[id].op<<"使用一张桃园结义\n";
                    if(a[id].name=="Huangyueying") Sleep(sleep/2),cout<<id<<"号位"<<a[id].op<<"使用集智\n",mo_pai(id,1),print(id,0);
                    tao_yuan(id);
                }
            }
            if(!a[id].pai.size()) return;
            if(a[id].pai[i]==" ") U=1;
            if(UU) U=0;
        }
        if(!U) break;
    }
    Sleep(sleep/2),cout <<"--弃牌阶段--\n";
    if(!sha||a[id].name!="Lvmeng") qi_pai(id);
    else if((int)a[id].pai.size()>a[id].HP) Sleep(sleep/2),cout <<id<<"号位"<<a[id].op<<"使用克己\n";
    print(id,1);
}
signed main(){
    freopen("ZGS.out","r",stdin);
    cin>>n>>m;mm=m;
    for(int i=1;i<=n;i++){
        cin>>a[i].op>>a[i].name;
        for(int j=1;j<=4;j++) cin>>t.p>>t.hs>>t.ds,get(t),a[i].pai.push_back(t);
        if(a[i].name=="Huangyueying") a[i].HP=a[i].HP_limit=3,a[i].sex=1;
        else if(a[i].name=="Luxun"||a[i].name=="Shencaocao") a[i].HP=a[i].HP_limit=3;
        else a[i].HP=a[i].HP_limit=4;
        if(i==1&&n>4) a[i].HP_limit++,a[i].HP++;
        a[i].weapon=" ",a[i].fang_yu_ma=" ",a[i].jing_gong_ma=" ";a[i].fan_wei=1;
    }
    a[1].shen_fen=1;
    int lun=0;
    for(int i=m;i>=1;i--) cin>>t.p>>t.hs>>t.ds,get(t),pai_dui[i]=t;
    pai_dui[0]=" ";
    for(int id=1;;id++){
        if(id==n+1) id=1;
        if(a[id].dead) continue;
        if(id==1)Sleep(sleep/2),cout<<"=======================第"<<++lun<<"轮============================\n";
        Sleep(sleep/2),cout <<"\nit's "<<id<<"号位"<<a[id].name<<"’s turn"<<"\n--准备阶段--\n--判定阶段--\n--摸牌阶段--\n";
        if(a[id].fanmian){
            a[id].fanmian^=1;
            cout<<id<<"号位翻面,结束回合\n";
            Sleep(sleep);
            continue;
        }
        if(a[id].name=="Xuchu"&&hurt(id)>=2) luoyi=1,mo_pai(id,1),cout <<id<<"号位"<<a[id].op<<"发动裸衣\n";
        else mo_pai(id,2);
        Sleep(sleep/2),cout<<"--出牌阶段--\n";
        use(id);luoyi=0;
        if(a[id].dead==0)Sleep(sleep/2),cout<<"--结束阶段--\n";
    }
    return 0;
}
/*
2 1
MP Baiban T 1 1 B 1 1 K 1 1 D 1 1
FP Xuchu I 1 1 G 1 1 F 1 1 C 1 1
T 1 1
*/