样例未过,求调
三国杀
不会更新
输入:
猪国杀基础上在身份后+武将名,在牌后+花色(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
*/