# Read_file #include<stdio.h> #include<stdlib.h> #include<iostream> #include<string.h> #include<vector> #include <sstream> #include <fstream> #include <algorithm> using namespace std; vector<string> rs; #define side_ str=="1w"||str=="2w"||str=="8w"||str=="9w"||str=="1t"||str=="2t"||str=="8t"||str=="9t"||str=="1s"||str=="2s"||str=="8s"||str=="9s" #define not_side str!="1w"||str!="2w"||str!="8w"||str!="9w"||str!="1t"||str!="2t"||str!="8t"||str!="9t"||str!="1s"||str!="2s"||str!="8s"||str!="9s" #define character str=="東"||str=="南"||str=="西"||str=="北"||str=="中"||str=="發"||str=="白" #define split "----------------------------------------------" vector<int> player1,player2,player3,player4; vector<int> my_card; vector<int> eat1,eat2,eat3,eat4; vector<int> pong1,pong2,pong3,pong4; vector<int> gong1,gong2,gong3,gong4; int mo_cnt1,mo_cnt2,mo_cnt3,mo_cnt4; int add_gong_cnt1,add_gong_cnt2,add_gong_cnt3,add_gong_cnt4; int gong_cnt1,gong_cnt2,gong_cnt3,gong_cnt4; int had_round=0,winner=0; int win_sum_0=0,win_sum_1=0,win_sum_2=0,win_sum_3=0,win_sum_4=0,win_sum_5=0; int step[21]; vector<string>act1,act2,act3,act4; vector<string>w,t,s,ch; vector<string>side_w,side_t,side_s; string suit[4]={"w","t","s",""}; string num[9]={"1","2","3","4","5","6","7","8","9"}; string word[7]={"東","南","西","北","中","發","白"}; void read_write(){ fstream read_file; string link=""; char buffer[80]; for(int i=1;i<=24;i++){//M string str="TCGA2016_M"; str=str+to_string(i)+"_"; link=str; for(int j=1;j<=16;j++){//num of data in M1~M24(or 16) str=link+to_string(j)+".log"; read_file.open(str); while(!read_file.eof()){ read_file.getline(buffer,80,'\n'); string tmp=buffer; rs.push_back(tmp); } read_file.close(); rs.push_back(split); } } } /*void read_write() { FILE *fp = NULL; // FILE *fq = NULL; char filename_body[100]; for(int i = 1; i <= 16; i ++) { char filename[16] ="ICGA2016_M2_"; memset(filename_body, 0, sizeof(filename_body)); itoa(i, filename_body, 10); strcat(filename,filename_body); char filename_tail[5] = ".log"; strcat(filename,filename_tail); if((fp=fopen(filename, "r")) == NULL) { cout<<"open filename fail..."<<endl; } char str[20]; while(fscanf(fp, "%[^\n]%*c", str) ==1) { string tmp = str; rs.push_back(tmp); //cout<<tmp<<endl; } rs.push_back(split); fclose(fp); } }*/ void print_mo_cnt(){ cout<<"player1's total mo count:"<<mo_cnt1<<endl; cout<<"player2's total mo count:"<<mo_cnt2<<endl; cout<<"player3's total mo count:"<<mo_cnt3<<endl; cout<<"player4's total mo count:"<<mo_cnt4<<endl; } void print_sum(){ cout<<endl; cout<<"player1's eat count:"<<eat1.size()/3<<endl; cout<<"player2's eat count:"<<eat2.size()/3<<endl; cout<<"player3's eat count:"<<eat3.size()/3<<endl; cout<<"player4's eat count:"<<eat4.size()/3<<endl; cout<<endl; cout<<"player1's pong count:"<<pong1.size()/3-add_gong_cnt1<<endl; cout<<"player2's pong count:"<<pong2.size()/3-add_gong_cnt2<<endl; cout<<"player3's pong count:"<<pong3.size()/3-add_gong_cnt3<<endl; cout<<"player4's pong count:"<<pong4.size()/3-add_gong_cnt4<<endl; cout<<endl; cout<<"player1's gong count:"<<gong_cnt1<<endl; cout<<"player2's gong count:"<<gong_cnt2<<endl; cout<<"player3's gong count:"<<gong_cnt3<<endl; cout<<"player4's gong count:"<<gong_cnt4<<endl; cout<<endl; int sum_of_player1=eat1.size()/3+pong1.size()/3-add_gong_cnt1+gong_cnt1; int sum_of_player2=eat2.size()/3+pong2.size()/3-add_gong_cnt2+gong_cnt2; int sum_of_player3=eat3.size()/3+pong3.size()/3-add_gong_cnt3+gong_cnt3; int sum_of_player4=eat4.size()/3+pong4.size()/3-add_gong_cnt4+gong_cnt4; cout<<"player1's eat+pong+gong count:"<<sum_of_player1<<endl; cout<<"player2's eat+pong+gong count:"<<sum_of_player2<<endl; cout<<"player3's eat+pong+gong count:"<<sum_of_player3<<endl; cout<<"player4's eat+pong+gong count:"<<sum_of_player4<<endl; if(winner==1){ if(sum_of_player1==0) win_sum_0++; else if(sum_of_player1==1) win_sum_1++; else if(sum_of_player1==2) win_sum_2++; else if(sum_of_player1==3) win_sum_3++; else if(sum_of_player1==4) win_sum_4++; else if(sum_of_player1==5) win_sum_5++; } else if(winner==2){ if(sum_of_player2==0) win_sum_0++; else if(sum_of_player2==1) win_sum_1++; else if(sum_of_player2==2) win_sum_2++; else if(sum_of_player2==3) win_sum_3++; else if(sum_of_player2==4) win_sum_4++; else if(sum_of_player2==5) win_sum_5++; } else if(winner==3){ if(sum_of_player3==0) win_sum_0++; else if(sum_of_player3==1) win_sum_1++; else if(sum_of_player3==2) win_sum_2++; else if(sum_of_player3==3) win_sum_3++; else if(sum_of_player3==4) win_sum_4++; else if(sum_of_player3==5) win_sum_5++; } else if(winner==4){ if(sum_of_player4==0) win_sum_0++; else if(sum_of_player4==1) win_sum_1++; else if(sum_of_player4==2) win_sum_2++; else if(sum_of_player4==3) win_sum_3++; else if(sum_of_player4==4) win_sum_4++; else if(sum_of_player4==5) win_sum_5++; } } void sort_(){ sort(w.begin(),w.end()); for(int i=0;i<w.size();i++) cout<<w[i]; if(w.empty()){} else if(!w.empty()&&(!t.empty()||!s.empty()||!ch.empty())) cout<<"w,"; else if(!w.empty()&&t.empty()&&s.empty()&&ch.empty()) cout<<"w"; sort(t.begin(),t.end()); for(int i=0;i<t.size();i++) cout<<t[i]; if(t.empty()){} else if(!t.empty()&&(!s.empty()||!ch.empty())) cout<<"t,"; else if(!t.empty()&&s.empty()&&ch.empty()) cout<<"t"<<endl; sort(s.begin(),s.end()); for(int i=0;i<s.size();i++) cout<<s[i]; if(s.empty()){} else if(!s.empty()&&!ch.empty()) cout<<"s,"; else if(!s.empty()&&ch.empty()) cout<<"s"; sort(ch.begin(),ch.end()); for(int i=0;i<ch.size();i++) cout<<ch[i]; } void clear_(){ w.clear(); t.clear(); s.clear(); ch.clear(); } void clear_for_everything(){ eat1.clear();eat2.clear();eat3.clear();eat4.clear(); pong1.clear(); pong2.clear(); pong3.clear(); pong4.clear(); gong1.clear(); gong2.clear(); gong3.clear(); gong4.clear(); player1.clear(); player2.clear(); player3.clear(); player4.clear(); act1.clear(); act2.clear(); act3.clear(); act4.clear(); mo_cnt1=mo_cnt2=mo_cnt3=mo_cnt4=0; add_gong_cnt1=add_gong_cnt2=add_gong_cnt3=add_gong_cnt4=0; gong_cnt1=gong_cnt2=gong_cnt3=gong_cnt4=0; } void side_clear(){ side_w.clear(); side_t.clear(); side_s.clear(); } string tile_(int n){ string sui,numb,tile; int r,temp; bool is_word=false,is_w=false,is_t=false,is_s=false; if(n/100==1){ sui=suit[0]; is_w=true; } if(n/100==2){ sui=suit[1]; is_t=true; } if(n/100==3){ sui=suit[2]; is_s=true; } if(n/100==4){ sui=suit[3]; is_word=true; } r=n%100; temp=r/10; if(is_word){ numb=word[temp-1]; ch.push_back(numb); } else numb=num[temp-1]; if(is_w) w.push_back(numb); else if(is_t) t.push_back(numb); else if(is_s) s.push_back(numb); tile=numb+sui; return tile; } void print_every(){ vector<string>side; string str; cout<<endl; cout<<"player1 throw:"<<endl; cout<<"依序為:"; for(int i=0;i<player1.size();i++){ //cout<<player1[i]<<" "; cout<<tile_(player1[i])<<" "; str=tile_(player1[i]); if(side_) side.push_back(str); else if(not_side){ if(character){} else{ step[i+1]++; } } }//for cout<<endl; cout<<"整理後:"; clear_(); for(int i=0;i<player1.size();i++) tile_(player1[i]); sort_(); cout<<endl; cout<<"邊張牌統計:"; for(int i=0;i<side.size();i++){ cout<<side[i]<<" "; string temps,buffer_0,buffer_1; temps=side[i]; buffer_1=temps[1]; if(buffer_1=="w"){ buffer_0=temps[0]; side_w.push_back(buffer_0); } if(buffer_1=="t"){ buffer_0=temps[0]; side_t.push_back(buffer_0); } if(buffer_1=="s"){ buffer_0=temps[0]; side_s.push_back(buffer_0); } } cout<<endl; cout<<"統整後:"<<endl; if(!side_w.empty()){ sort(side_w.begin(),side_w.end()); for(int i=0;i<side_w.size();i++) cout<<side_w[i]; cout<<"w"<<endl; } if(!side_t.empty()){ sort(side_t.begin(),side_t.end()); for(int i=0;i<side_t.size();i++) cout<<side_t[i]; cout<<"t"<<endl; } if(!side_s.empty()){ sort(side_s.begin(),side_s.end()); for(int i=0;i<side_s.size();i++) cout<<side_s[i]; cout<<"s"<<endl; } side.clear(); side_clear(); cout<<endl; //--------------------------- cout<<"player2 throw:"<<endl; cout<<"依序為:"; for(int i=0;i<player2.size();i++){ //cout<<player2[i]<<" "; cout<<tile_(player2[i])<<" "; str=tile_(player2[i]); if(side_) side.push_back(str); else if(not_side){ if(character){} else{ step[i+1]++; } } } cout<<endl; cout<<"整理後:"; clear_(); for(int i=0;i<player2.size();i++) tile_(player2[i]); sort_(); cout<<endl; cout<<"邊張牌統計:"; for(int i=0;i<side.size();i++){ cout<<side[i]<<" "; string temps,buffer_0,buffer_1; temps=side[i]; buffer_1=temps[1]; if(buffer_1=="w"){ buffer_0=temps[0]; side_w.push_back(buffer_0); } if(buffer_1=="t"){ buffer_0=temps[0]; side_t.push_back(buffer_0); } if(buffer_1=="s"){ buffer_0=temps[0]; side_s.push_back(buffer_0); } } cout<<endl; cout<<"統整後:"<<endl; if(!side_w.empty()){ sort(side_w.begin(),side_w.end()); for(int i=0;i<side_w.size();i++) cout<<side_w[i]; cout<<"w"<<endl; } if(!side_t.empty()){ sort(side_t.begin(),side_t.end()); for(int i=0;i<side_t.size();i++) cout<<side_t[i]; cout<<"t"<<endl; } if(!side_s.empty()){ sort(side_s.begin(),side_s.end()); for(int i=0;i<side_s.size();i++) cout<<side_s[i]; cout<<"s"<<endl; } side.clear(); side_clear(); cout<<endl; //--------------------------- cout<<"player3 throw:"<<endl; cout<<"依序為:"; for(int i=0;i<player3.size();i++){ //cout<<player3[i]<<" "; cout<<tile_(player3[i])<<" "; str=tile_(player3[i]); if(side_) side.push_back(str); else if(not_side){ if(character){} else{ step[i+1]++; } } } cout<<endl; cout<<"整理後:"; clear_(); for(int i=0;i<player3.size();i++) tile_(player3[i]); sort_(); cout<<endl; cout<<"邊張牌統計:"; for(int i=0;i<side.size();i++){ cout<<side[i]<<" "; string temps,buffer_0,buffer_1; temps=side[i]; buffer_1=temps[1]; if(buffer_1=="w"){ buffer_0=temps[0]; side_w.push_back(buffer_0); } if(buffer_1=="t"){ buffer_0=temps[0]; side_t.push_back(buffer_0); } if(buffer_1=="s"){ buffer_0=temps[0]; side_s.push_back(buffer_0); } } cout<<endl; cout<<"統整後:"<<endl; if(!side_w.empty()){ sort(side_w.begin(),side_w.end()); for(int i=0;i<side_w.size();i++) cout<<side_w[i]; cout<<"w"<<endl; } if(!side_t.empty()){ sort(side_t.begin(),side_t.end()); for(int i=0;i<side_t.size();i++) cout<<side_t[i]; cout<<"t"<<endl; } if(!side_s.empty()){ sort(side_s.begin(),side_s.end()); for(int i=0;i<side_s.size();i++) cout<<side_s[i]; cout<<"s"<<endl; } side.clear(); side_clear(); cout<<endl; //--------------------------- cout<<"player4 throw:"<<endl; cout<<"依序為:"; for(int i=0;i<player4.size();i++){ //cout<<player4[i]<<" "; cout<<tile_(player4[i])<<" "; str=tile_(player4[i]); if(side_) side.push_back(str); else if(not_side){ if(character){} else{ step[i+1]++; } } } cout<<endl; cout<<"整理後:"; clear_(); for(int i=0;i<player4.size();i++) tile_(player4[i]); sort_(); cout<<endl; cout<<"邊張牌統計:"; for(int i=0;i<side.size();i++){ cout<<side[i]<<" "; string temps,buffer_0,buffer_1; temps=side[i]; buffer_1=temps[1]; if(buffer_1=="w"){ buffer_0=temps[0]; side_w.push_back(buffer_0); } if(buffer_1=="t"){ buffer_0=temps[0]; side_t.push_back(buffer_0); } if(buffer_1=="s"){ buffer_0=temps[0]; side_s.push_back(buffer_0); } } cout<<endl; cout<<"統整後:"<<endl; if(!side_w.empty()){ sort(side_w.begin(),side_w.end()); for(int i=0;i<side_w.size();i++) cout<<side_w[i]; cout<<"w"<<endl; } if(!side_t.empty()){ sort(side_t.begin(),side_t.end()); for(int i=0;i<side_t.size();i++) cout<<side_t[i]; cout<<"t"<<endl; } if(!side_s.empty()){ sort(side_s.begin(),side_s.end()); for(int i=0;i<side_s.size();i++) cout<<side_s[i]; cout<<"s"<<endl; } side.clear(); side_clear(); cout<<endl; //--------------------------------------------------------------------------- cout<<"my card(final):"<<endl; clear_(); for(int i=0;i<my_card.size();i++) tile_(my_card[i]); sort(w.begin(),w.end()); for(int i=0;i<w.size();i++) cout<<w[i]; cout<<"w,"; sort(t.begin(),t.end()); for(int i=0;i<t.size();i++) cout<<t[i]; cout<<"t,"; sort(s.begin(),s.end()); for(int i=0;i<s.size();i++) cout<<s[i]; if(!ch.empty()) cout<<"s,"; else cout<<"s"; sort(ch.begin(),ch.end()); for(int i=0;i<ch.size();i++) cout<<ch[i]; cout<<endl; //--------------------------------------------------------------------------- cout<<endl; cout<<"player1 eat card:"<<endl; clear_(); for(int i=0;i<eat1.size();i++) //cout<<eat1[i]<<" "; cout<< tile_(eat1[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player2 eat card:"<<endl; clear_(); for(int i=0;i<eat2.size();i++) //cout<<eat2[i]<<" "; cout<<tile_(eat2[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player3 eat card:"<<endl; clear_(); for(int i=0;i<eat3.size();i++) //cout<<eat3[i]<<" "; cout<<tile_(eat3[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player4 eat card:"<<endl; clear_(); for(int i=0;i<eat4.size();i++) //cout<<eat4[i]<<" "; cout<<tile_(eat4[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; //------------------------------------------------------------------------------ cout<<endl; cout<<"player1 pong card:"<<endl; clear_(); for(int i=0;i<pong1.size();i++) //cout<<pong1[i]<<" "; cout<<tile_(pong1[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player2 pong card:"<<endl; clear_(); for(int i=0;i<pong2.size();i++) // cout<<pong2[i]<<" "; cout<<tile_(pong2[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player3 pong card:"<<endl; clear_(); for(int i=0;i<pong3.size();i++) // cout<<pong3[i]<<" "; cout<<tile_(pong3[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player4 pong card:"<<endl; clear_(); for(int i=0;i<pong4.size();i++) // cout<<pong4[i]<<" "; cout<<tile_(pong4[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; //------------------------------------------------------------------------------- cout<<endl; cout<<"player1 gong card:"<<endl; clear_(); for(int i=0;i<gong1.size();i++) //cout<<gong1[i]<<" "; cout<<tile_(gong1[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player2 gong card:"<<endl; clear_(); for(int i=0;i<gong2.size();i++) // cout<<gong2[i]<<" "; cout<<tile_(gong2[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player3 gong card:"<<endl; clear_(); for(int i=0;i<gong3.size();i++) // cout<<gong3[i]<<" "; cout<<tile_(gong3[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; cout<<endl; cout<<"player4 gong card:"<<endl; clear_(); for(int i=0;i<gong4.size();i++) // cout<<gong4[i]<<" "; cout<<tile_(gong4[i])<<" "; cout<<endl; cout<<"整理後:"; sort_(); cout<<endl; //------------------------------------------------------------------------------- cout<<endl; cout<<"series action of every players:"<<endl; cout<<endl; cout<<"player1's action:"<<endl; for(int i=0;i<act1.size();i++) { //cout<<act1[i]<<" "<<endl; stringstream sss(act1[i]); string str=""; int count=0; bool for_gong=false; while(sss>>str){ count++; if(str=="/gong") for_gong=true; if(for_gong==true&&count>=4){} if(for_gong==false&&count>=3) cout<<tile_(stoi(str))<<" "; else cout<<str<<" "; } cout<<endl; } cout<<endl; cout<<"player2's action:"<<endl; for(int i=0;i<act2.size();i++){ //cout<<act2[i]<<" "<<endl; stringstream sss(act2[i]); string str=""; int count=0; while(sss>>str){ count++; if(count>=3){ cout<<tile_(stoi(str))<<" "; } else cout<<str<<" "; } cout<<endl; } cout<<endl; cout<<"player3's action:"<<endl; for(int i=0;i<act3.size();i++){ //cout<<act3[i]<<" "<<endl; stringstream sss(act3[i]); string str=""; int count=0; while(sss>>str){ count++; if(count>=3){ cout<<tile_(stoi(str))<<" "; } else cout<<str<<" "; } cout<<endl; } cout<<endl; cout<<"player4's action:"<<endl; for(int i=0;i<act4.size();i++){ //cout<<act4[i]<<" "<<endl; stringstream sss(act4[i]); string str=""; int count=0; while(sss>>str){ count++; if(count>=3){ cout<<tile_(stoi(str))<<" "; } else cout<<str<<" "; } cout<<endl; } cout<<endl; print_mo_cnt(); print_sum(); //cout<<"host: player"<<host<<endl; } int main(){ read_write(); int line=0,my_ID=0,host,now=1; for(int i=0;i<21;i++) step[i]=0; for(int i = 0; i < rs.size(); i ++){ if(rs[i]==split){ print_every(); cout<<split<<now<<endl; clear_(); clear_for_everything(); my_card.clear(); had_round=0; now++; winner=0; //p1_step=0,p2_step=0,p3_step=0,p4_step=0; } stringstream ss(rs[i]); string str =""; bool throw_ =false,card=false,mo=false,eat=false,pong=false,hu=false,game=false; bool gong=false,light_gong=false,dark_gong=false,add_gong=false; bool start=false; int record=0,cnt=1,last_throw; while(ss>>str){ if(str=="/start"){//my player id start=true; cnt++; continue; } if(start==true&&cnt==2){ cnt++; continue; } if(start==true&&cnt==3){ my_ID=stoi(str); break; } //getCommand: if(str=="getCommand:"){ break; } //iniGame if(str=="/initGame"){ game=true; cnt++; continue; } if(game==true) cnt++; if(game==true&&cnt==6){ host=stoi(str); break; } //my initial card if(str=="/initCard"){ card=true; continue; } if(card==true){ my_card.push_back(stoi(str)); //cout<<"size:"<<my_card.size()<<endl; //cout<<s<<endl; continue; } //mo if(str=="/mo"){ mo=true; continue; } if(mo==true){ my_card.push_back(stoi(str)); cout<<"now my card(update after /mo):"; clear_(); for(int i=0;i<my_card.size();i++) tile_(my_card[i]); sort_(); cout<<endl; } //eat if(str=="/eat"){ eat=true; cnt++; continue; } if(eat==true&&cnt==2){ record=stoi(str); cnt++; continue; } if(eat==true&&cnt>=3){ if(record==1){ eat1.push_back(stoi(str)); if(cnt==3)act1.push_back(rs[i]); } if(record==2){ eat2.push_back(stoi(str)); if(cnt==3)act2.push_back(rs[i]); } if(record==3){ eat3.push_back(stoi(str)); if(cnt==3)act3.push_back(rs[i]); } if(record==4){ eat4.push_back(stoi(str)); if(cnt==3)act4.push_back(rs[i]); } cnt++; continue; } if(eat==true&&record==my_ID&&cnt==5){ my_card.push_back(stoi(str)); continue; //cnt++; } //pong if(str=="/pong"){ pong=true; cnt++; continue; } if(pong==true&&cnt==2){ record=stoi(str); if(record==my_ID){ my_card.push_back(last_throw); } cnt++; continue; } if(pong==true&&cnt>=3){ if(record==1){ pong1.push_back(stoi(str)); if(cnt==3)act1.push_back(rs[i]); } if(record==2){ pong2.push_back(stoi(str)); if(cnt==3)act2.push_back(rs[i]); } if(record==3){ pong3.push_back(stoi(str)); if(cnt==3)act3.push_back(rs[i]); } if(record==4){ pong4.push_back(stoi(str)); if(cnt==3)act4.push_back(rs[i]); } cnt++; continue; } //gong if(str=="/gong"){ gong=true; cnt++; continue; } if(gong==true&&cnt==2){ record=stoi(str); cnt++; continue; } if(gong==true&&cnt==3){ if(str=="4") light_gong=true; if(str=="0") dark_gong=true; if(str=="1") add_gong=true; cnt++; continue; } if(gong==true&&cnt>=4){ if(light_gong==true){ if(record==1){ gong1.push_back(stoi(str)); gong_cnt1++; if(cnt==4)act1.push_back(rs[i]); cnt++; } if(record==2){ gong2.push_back(stoi(str)); gong_cnt2++; if(cnt==4)act2.push_back(rs[i]); cnt++; } if(record==3){ gong3.push_back(stoi(str)); gong_cnt3++; if(cnt==4)act3.push_back(rs[i]); cnt++; } if(record==4){ gong4.push_back(stoi(str)); gong_cnt4++; if(cnt==4)act4.push_back(rs[i]); cnt++; } } if(add_gong==true){ if(record==1){ gong_cnt1++; add_gong_cnt1++; for(int i=0;i<4;i++) gong1.push_back(stoi(str)); int flag=pong1.size(); for(int i=0;i<pong1.size();i++){ if(pong1[i]==stoi(str)){ pong1.erase(pong1.begin()+i); } } if(cnt==4)act1.push_back(rs[i]); cnt++; } if(record==2){ gong_cnt2++; add_gong_cnt2++; for(int i=0;i<4;i++) gong2.push_back(stoi(str)); for(int i=0;i<pong2.size();i++){ if(pong2[i]==stoi(str)) pong2.erase(pong2.begin()+i); } if(cnt==4)act2.push_back(rs[i]); cnt++; } if(record==3){ gong_cnt3++; add_gong_cnt3++; for(int i=0;i<4;i++) gong3.push_back(stoi(str)); for(int i=0;i<pong3.size();i++){ if(pong3[i]==stoi(str)) pong3.erase(pong3.begin()+i); } if(cnt==4)act3.push_back(rs[i]); cnt++; } if(record==4){ gong_cnt4++; add_gong_cnt4++; for(int i=0;i<4;i++) gong4.push_back(stoi(str)); for(int i=0;i<pong4.size();i++){ if(pong4[i]==stoi(str)) pong4.erase(pong4.begin()+i); } if(cnt==4)act4.push_back(rs[i]); cnt++; } } if(dark_gong==true){ if(record==1){ if(cnt==4){ act1.push_back(rs[i]); gong_cnt1++; } if(my_ID==record&&cnt>=4){ gong1.push_back(stoi(str)); cnt++; continue; } } if(record==2){ if(cnt==4){ act2.push_back(rs[i]); gong_cnt2++; } if(my_ID==record&&cnt>=4){ gong2.push_back(stoi(str)); cnt++; continue; } } if(record==3){ if(cnt==4){ act3.push_back(rs[i]); gong_cnt3++; } if(my_ID==record&&cnt>=4){ gong3.push_back(stoi(str)); cnt++; continue; } } if(record==4){ if(cnt==5){ act4.push_back(rs[i]); gong_cnt4++; } if(my_ID==record&&cnt>=4){ gong4.push_back(stoi(str)); cnt++; continue; } } } } //throw if(str=="/throw"){ throw_=true; had_round++; cnt++; cout<<rs[i]<<endl; continue; } if(throw_==true&&cnt==2){ record=stoi(str); cnt++; continue; } if(throw_==true&&record==1&&cnt==3){ mo_cnt1++; player1.push_back(stoi(str)); act1.push_back(rs[i]); } if(throw_==true&&record==2&&cnt==3){ mo_cnt2++; player2.push_back(stoi(str)); act2.push_back(rs[i]); } if(throw_==true&&record==3&&cnt==3){ mo_cnt3++; player3.push_back(stoi(str)); act3.push_back(rs[i]); } if(throw_==true&&record==4&&cnt==3){ mo_cnt4++; player4.push_back(stoi(str)); act4.push_back(rs[i]); } int calculate,cal2,temp; if(throw_==true&&record==my_ID&&cnt==3){//my throw's card int index; for(int i=0;i<my_card.size();i++){ if(my_card[i]==stoi(str)){ index=i; calculate=my_card[i]/100; temp=my_card[i]%100; cal2=temp/10; //cout<<"index="<<i<<endl; } } my_card.erase(my_card.begin()+index); if(calculate==1){ for(int i=0;i<w.size();i++){ if(stoi(w[i])==cal2) index=i; } clear_(); for(int j=0;j<my_card.size();j++) tile_(my_card[j]); // w.erase(w.begin()+index); } else if(calculate==2){ for(int i=0;i<t.size();i++){ if(stoi(t[i])==cal2) index=i; } clear_(); for(int j=0;j<my_card.size();j++) tile_(my_card[j]); // t.erase(t.begin()+index); } else if(calculate==3){ for(int i=0;i<s.size();i++){ if(stoi(s[i])==cal2) index=i; } clear_(); for(int j=0;j<my_card.size();j++) tile_(my_card[j]); // s.erase(s.begin()+index); } else if(calculate==4){ for(int i=0;i<ch.size();i++){ if(ch[i]==word[cal2-1])//cal2=6 index=i; } clear_(); for(int j=0;j<my_card.size();j++) tile_(my_card[j]); // ch.erase(ch.begin()+index); } } if(cnt==3&&throw_==true) last_throw=stoi(str); //hu if(str=="/hu"){ cout<<"total round play in this game:"<<had_round<<endl; hu=true; cnt++; continue; } if(hu==true&&cnt==2){ record=stoi(str); winner=stoi(str); cnt++; continue; } if(hu==true&&cnt==3&&my_ID==record){ my_card.push_back(stoi(str)); cnt++; } }//split string }//for rs fstream myfile; cout<<"win in sum of eat,pong,gong=0: "<<win_sum_0<<endl; myfile.open("sum_of_eat_pong_gong_0.txt",ios::app); myfile <<to_string(win_sum_0)<<"\n"; myfile.close(); cout<<"win in sum of eat,pong,gong=1: "<<win_sum_1<<endl; myfile.open("sum_of_eat_pong_gong_1.txt",ios::app); myfile <<to_string(win_sum_1)<<"\n"; myfile.close(); cout<<"win in sum of eat,pong,gong=2: "<<win_sum_2<<endl; myfile.open("sum_of_eat_pong_gong_2.txt",ios::app); myfile <<to_string(win_sum_2)<<"\n"; myfile.close(); cout<<"win in sum of eat,pong,gong=3: "<<win_sum_3<<endl; myfile.open("sum_of_eat_pong_gong_3.txt",ios::app); myfile <<to_string(win_sum_3)<<"\n"; myfile.close(); cout<<"win in sum of eat,pong,gong=4: "<<win_sum_4<<endl; myfile.open("sum_of_eat_pong_gong_4.txt",ios::app); myfile <<to_string(win_sum_4)<<"\n"; myfile.close(); cout<<"win in sum of eat,pong,gong=5: "<<win_sum_5<<endl; myfile.open("sum_of_eat_pong_gong_5.txt",ios::app); myfile <<to_string(win_sum_5)<<"\n"; myfile.close(); cout<<"throw card (number3~7) in every step(throw):"<<endl; fstream new_file; for(int i=1;i<21;i++){ string str="output"+to_string(i)+".txt"; new_file.open(str,ios::app); new_file<<step[i]<<"\n"; cout<<i<<"step:"<<step[i]<<endl; new_file.close(); } cout<<"DONE"<<endl; return 0; }