📄 junqi_server.cpp
字号:
Send_gameover_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,qiju_id); glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state = USER_INFO_STATE_INIT_QI_MAP; } } //game over; memset(glb_qi_ju_list[qiju_id].map_run,0,sizeof(glb_qi_ju_list[qiju_id].map_run)); if(glb_qi_ju_list[qiju_id].user_num<4){ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_WAIT_PLAYER; } else{ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_PLAYER_INIT; } } else if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[itmp]].user_state==USER_INFO_STATE_DIED){ //send S_GameOver to other player; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ Send_gameover_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,qiju_id); glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state = USER_INFO_STATE_INIT_QI_MAP; } } //game over; memset(glb_qi_ju_list[qiju_id].map_run,0,sizeof(glb_qi_ju_list[qiju_id].map_run)); if(glb_qi_ju_list[qiju_id].user_num<4){ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_WAIT_PLAYER; } else{ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_PLAYER_INIT; } } } else{ if(glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]%100==QI_SILING_SYMBOL){ //user d siling was died. //send show d junqi to all player. for(int i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ Send_show_junqi_to_player(i,qiju_id,glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]/100-1); } } } if(glb_qi_ju_list[qiju_id].map_run[qi_s_xindex][qi_s_yindex]%100==QI_SILING_SYMBOL){ //user s siling was died. //send show d junqi to all player. for(int i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ Send_show_junqi_to_player(i,qiju_id,player_id); } } } } } else if(ieat_qi==-1){ for(int i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1 && glb_qi_ju_list[qiju_id].user_index[i]!=user_index){ switch(i){ case 0: sn_s_xindex = qi_s_xindex; sn_s_yindex = qi_s_yindex; break; case 1: Exchange_x_y_forword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex); break; case 2: Exchange_x_y_forword_180(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex); break; case 3: Exchange_x_y_backword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex); break; } //Send del qi_s to all other players. Send_del_qi_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,sn_s_xindex,sn_s_yindex); } } whose_qi=-1; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"Ack "); strcat(sbuff,para); strcat(sbuff," C_MoveQi "); strcat(sbuff,result); strcat(sbuff," "); memset(para,0,sizeof(para)); sprintf(para,"%d",s_xindex); strcat(sbuff,para); strcat(sbuff," "); memset(para,0,sizeof(para)); sprintf(para,"%d",s_yindex); strcat(sbuff,para); strcat(sbuff," "); memset(para,0,sizeof(para)); sprintf(para,"%d",d_xindex); strcat(sbuff,para); strcat(sbuff," "); memset(para,0,sizeof(para)); sprintf(para,"%d",d_yindex); strcat(sbuff,para); strcat(sbuff," "); memset(para,0,sizeof(para)); sprintf(para,"%d",whose_qi); strcat(sbuff,para); strcat(sbuff," "); writenTCP(glb_user_list[user_index].tcpFD,sbuff,strlen(sbuff)); //eat die. if(glb_qi_ju_list[qiju_id].map_run[qi_s_xindex][qi_s_yindex]%100==QI_SILING_SYMBOL){ //user s siling was died. //send show d junqi to all player. for(int i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ Send_show_junqi_to_player(i,qiju_id,player_id); } } } } //Send move qi Ring to the next player. if(igame_over_flag==0){ int i_old_run; int ifound; int i; i_old_run=glb_qi_ju_list[qiju_id].cur_run_user; ifound = -1; for(i=i_old_run+1;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state==USER_INFO_STATE_START_PLAY){ ifound = i; break; } } } if(ifound == -1){ for(i=0;i<i_old_run;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state==USER_INFO_STATE_START_PLAY){ ifound = i; break; } } } } if(ifound != -1){ glb_qi_ju_list[qiju_id].cur_run_user=ifound; } Send_run_qi_ring_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[glb_qi_ju_list[qiju_id].cur_run_user]].tcpFD,glb_qi_ju_list[qiju_id].user_index[glb_qi_ju_list[qiju_id].cur_run_user],qiju_id,glb_qi_ju_list[qiju_id].cur_run_user); }//end Send move qi Ring. } else{ return -1; } } else{ return -1; } } else{ return -1; } return 0;}int deal_cli_ask_peace(char *rbuff,int user_index){ return 0;}int deal_cli_give_up(char *rbuff,int user_index){ return 0;}int deal_cli_leave_qiju(char *rbuff,int user_index){ char para[128]; char sbuff[1024]; int player_id; int qiju_id; int user_id; int tid; int igame_over_flag; int iret; memset(para,0,sizeof(para)); iret = data_para(rbuff,5,para); if(iret == 0){ sscanf(para,"%d",&player_id); } else{ return -1; } memset(para,0,128); iret = data_para(rbuff,4,para); if(iret == 0){ sscanf(para,"%d",&qiju_id); } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,3,para); if(iret == 0){ sscanf(para,"%d",&user_id); } else{ return -1; } memset(para,0,128); iret = data_para(rbuff,2,para); if(iret == 0){ sscanf(para,"%d",&tid); } else{ return -1; } if(user_id==user_index && player_id<4 && player_id>=0 && glb_user_list[user_index].qi_ju_index==qiju_id){ switch(glb_qi_ju_list[qiju_id].state){ case QI_JU_STATE_WAIT_PLAYER: case QI_JU_STATE_PLAYER_INIT: if(glb_qi_ju_list[qiju_id].user_index[player_id]==user_id){ glb_qi_ju_list[qiju_id].user_flag[player_id]=0; glb_qi_ju_list[qiju_id].user_index[player_id]=0; glb_qi_ju_list[qiju_id].user_num--; glb_user_list[user_index].user_state = USER_INFO_STATE_NO_QI_JU; glb_user_list[user_index].qi_ju_index = 0; //remove player map_run data; for(int kk=0;kk<17;kk++){ for(int jj=0;jj<17;jj++){ if(glb_qi_ju_list[qiju_id].map_run[kk][jj]/100==player_id+1){ glb_qi_ju_list[qiju_id].map_run[kk][jj]=0; } } } /* //send S_LeaveQiJu to other client; for(int i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id); } }*/ //send S_LeaveQiJu to other client; for(int i=1;i<=MAX_USER_INFO_NUM;i++){ if(glb_user_list[i].used_flag==1 && glb_user_list[i].user_connect_flag==USER_CONNECT_FLAG_LOGINED && i!=user_index){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[i].tcpFD,user_index,qiju_id,player_id); } } } break; case QI_JU_STATE_START_PLAY: if(glb_qi_ju_list[qiju_id].user_index[player_id]==user_id){ igame_over_flag = 0; if(glb_user_list[user_index].user_state==USER_INFO_STATE_DIED){ glb_qi_ju_list[qiju_id].user_flag[player_id]=0; glb_qi_ju_list[qiju_id].user_index[player_id]=0; glb_qi_ju_list[qiju_id].user_num--; glb_user_list[user_index].user_state = USER_INFO_STATE_NO_QI_JU; glb_user_list[user_index].qi_ju_index = 0; //remove player map_run data; for(int kk=0;kk<17;kk++){ for(int jj=0;jj<17;jj++){ if(glb_qi_ju_list[qiju_id].map_run[kk][jj]/100==player_id+1){ glb_qi_ju_list[qiju_id].map_run[kk][jj]=0; } } } } else{ int i; glb_user_list[user_index].user_state = USER_INFO_STATE_NO_QI_JU; //send S_KillPlayer to other client; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1 && glb_qi_ju_list[qiju_id].user_index[i] != user_index){ Send_kill_player_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id); } } //remove player map_run data; for(int kk=0;kk<17;kk++){ for(int jj=0;jj<17;jj++){ if(glb_qi_ju_list[qiju_id].map_run[kk][jj]/100==player_id+1){ glb_qi_ju_list[qiju_id].map_run[kk][jj]=0; } } } int itmp; switch(player_id%2){ case 0: itmp=2-player_id; break; case 1: itmp=4-player_id; break; default: break; } if(glb_qi_ju_list[qiju_id].user_flag[itmp]==0 ){ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_WAIT_PLAYER; //send S_GameOver to other player; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1 && glb_qi_ju_list[qiju_id].user_index[i] != user_index){ Send_gameover_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,qiju_id); glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state = USER_INFO_STATE_INIT_QI_MAP; } } igame_over_flag = 1; //game over; memset(glb_qi_ju_list[qiju_id].map_run,0,sizeof(glb_qi_ju_list[qiju_id].map_run)); } else if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[itmp]].user_state==USER_INFO_STATE_DIED){ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_WAIT_PLAYER; //send S_GameOver to other player; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1 && glb_qi_ju_list[qiju_id].user_index[i] != user_index){ Send_gameover_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,qiju_id); glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state = USER_INFO_STATE_INIT_QI_MAP; } } igame_over_flag = 1; //game over; memset(glb_qi_ju_list[qiju_id].map_run,0,sizeof(glb_qi_ju_list[qiju_id].map_run)); } glb_qi_ju_list[qiju_id].user_flag[player_id]=0; glb_qi_ju_list[qiju_id].user_index[player_id]=0; glb_qi_ju_list[qiju_id].user_num--; glb_user_list[user_index].user_state = USER_INFO_STATE_NO_QI_JU; glb_user_list[user_index].qi_ju_index = 0; } /* //send S_LeaveQiJu to other client; for(int itmp=0;itmp<4;itmp++){ if(glb_qi_ju_list[qiju_id].user_flag[itmp]==1){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[itmp]].tcpFD,user_index,qiju_id,player_id); } } */ //send S_LeaveQiJu to other client; for(int itmp=1;itmp<=MAX_USER_INFO_NUM;itmp++){ if(glb_user_list[itmp].used_flag==1 && glb_user_list[itmp].user_connect_flag==USER_CONNECT_FLAG_LOGINED && itmp!=user_index){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[itmp].tcpFD,user_index,qiju_id,player_id); } } if(glb_qi_ju_list[qiju_id].cur_run_user==player_id){ //Send move qi Ring to the next player. if(igame_over_flag==0){ int i_old_run; int ifound; int i; i_old_run=glb_qi_ju_list[qiju_id].cur_run_user; ifound = -1; for(i=i_old_run+1;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state==USER_INFO_STATE_START_PLAY){ ifound = i; break; } } } if(ifound == -1){ for(i=0;i<i_old_run;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state==USER_INFO_STATE_START_PLAY){ ifound = i; break; } } } } if(ifound != -1){ glb_qi_ju_list[qiju_id].cur_run_user=ifound; } Send_run_qi_ring_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[glb_qi_ju_list[qiju_id].cur_run_user]].tcpFD,glb_qi_ju_list[qiju_id].user_index[glb_qi_ju_list[qiju_id].cur_run_user],qiju_id,glb_qi_ju_list[qiju_id].cur_run_user); }//end Send move qi Ring. } } break; default: break; } } else{ return -1; } memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"Ack "); strcat(sbuff,para); strcat(sbuff," C_LeaveQiJu "); strcat(sbuff,"OK"); strcat(sbuff," "); writenTCP(glb_user_list[user_index].tcpFD,sbuff,strlen(sbuff)); return 0;}int deal_cli_ack(char *rbuff,int user_index){ return 0;}int decode_cmd_name(char *cmd_str){ int iret; iret = -1; for(int i=0;i<MAX_CMD_NUM;i++){ if(!strcmp(TransCmdStr[i],cmd_str)){ iret = i; } } return iret;}int delete_user(int user_index){ int i; int kk,jj; int player_id; int qiju_id; switch(glb_user_list[user_index].user_state){ case USER_INFO_STATE_NO_QI_JU: break; case USER_INFO_STATE_INIT_QI_MAP: case USER_INFO_STATE_DIED: qiju_id=glb_user_list[user_index].qi_ju_index; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_index[i]==user_index && glb_qi_ju_list[qiju_id].user_flag[i]==1){ glb_qi_ju_list[qiju_id].user_index[i]=0; glb_qi_ju_list[qiju_id].user_flag[i]=0; glb_qi_ju_list[qiju_id].user_num--; player_id = i; } } //remove player map_run data; for(kk=0;kk<17;kk++){ for(int jj=0;jj<17;jj++){ if(glb_qi_ju_list[qiju_id].map_run[kk][jj]/100==player_id+1){ glb_qi_ju_list[qiju_id].map_run[kk][jj]=0; } } } /* for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id); } }*/ for(i=1;i<=MAX_USER_INFO_NUM;i++){ if(glb_user_list[i].used_flag==1 && glb_user_list[i].user_connect_flag==USER_CONNECT_FLAG_LOGINED && i!=user_index){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[i].tcpFD,user_index,qiju_id,player_id); } } break; case USER_INFO_STATE_START_PLAY: qiju_id=glb_user_list[user_index].qi_ju_index; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_index[i]==user_index && glb_qi_ju_list[qiju_id].user_flag[i]==1){ glb_qi_ju_list[qiju_id].user_index[i]=0; glb_qi_ju_list[qiju_id].user_flag[i]=0; glb_qi_ju_list[qiju_id].user_num--; player_id = i; } } //remove player map_run data; for(kk=0;kk<17;kk++){ for(int jj=0;jj<17;jj++){ if(glb_qi_ju_list[qiju_id].map_run[kk][jj]/100==player_id+1){ glb_qi_ju_list[qiju_id].map_run[kk][jj]=0; } } } if(glb_qi_ju_list[qiju_id].state==QI_JU_STATE_START_PLAY){ for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1){ //send S_KillPlayer to other client; Send_kill_player_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id); /* //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id); */ } } for(i=1;i<=MAX_USER_INFO_NUM;i++){ if(glb_user_list[i].used_flag==1 && glb_user_list[i].user_connect_flag==USER_CONNECT_FLAG_LOGINED && i!=user_index){ //send leave qiju to qiju players; Send_leave_qiju_to_player(glb_user_list[i].tcpFD,user_index,qiju_id,player_id); } } int itmp; switch(player_id%2){ case 0: itmp=2-player_id; break; case 1: itmp=4-player_id; break; default: break; } if(glb_qi_ju_list[qiju_id].user_flag[itmp]==0 ){ glb_qi_ju_list[qiju_id].state=QI_JU_STATE_WAIT_PLAYER; //send S_GameOver to other player; for(i=0;i<4;i++){ if(glb_qi_ju_list[qiju_id].user_flag[i]==1 && glb_qi_ju_list[qiju_id].user_index[i] != user_index){ Send_gameover_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,qiju_id); glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state = USER_INFO_STATE_INIT_QI_MAP; } } //game over;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -