📄 junqi_client.cpp
字号:
glb_qiju_list[qiju_id].user_num++; glb_user_list[user_id].qi_ju_index = qiju_id; glb_user_list[user_id].user_state = user_state; if(user_state==USER_INFO_STATE_START_PLAY){ switch(self_player_side){ case PLAYER_SIDE_A: if(i==1){ qiju_draw_right_qi_map_play_init(); } else if(i==2){ qiju_draw_up_qi_map_play_init(); } else if(i==3){ qiju_draw_left_qi_map_play_init(); } break; case PLAYER_SIDE_B: if(i==0){ qiju_draw_left_qi_map_play_init(); } else if(i==2){ qiju_draw_right_qi_map_play_init(); } else if(i==3){ qiju_draw_up_qi_map_play_init(); } break; case PLAYER_SIDE_C: if(i==0){ qiju_draw_up_qi_map_play_init(); } else if(i==1){ qiju_draw_left_qi_map_play_init(); } else if(i==3){ qiju_draw_right_qi_map_play_init(); } break; case PLAYER_SIDE_D: if(i==0){ qiju_draw_right_qi_map_play_init(); } else if(i==1){ qiju_draw_up_qi_map_play_init(); } else if(i==2){ qiju_draw_left_qi_map_play_init(); } break; default: break; } } } } qiju_redraw_screen(); } else{ ;//could not join; } XFlush(dis); printf("After deal\n"); for(i=1;i<=MAX_QI_JU_NUM;i++){ for(j=0;j<4;j++) printf("The qiju[%d] user_flag[%d]=%d\n",i,j,glb_qiju_list[i].user_flag[j]); } return 0;}int deal_svr_ack_start_game(char *rbuff){ char para[128]; char sbuff[1024]; int iret; int result; memset(para,0,sizeof(para)); iret = data_para(rbuff,4,para); if(iret==0){ if(!strcmp(para,"OK")){ result = 0; } else{ result = -1; } } else{ return -1; } if(result==0){ ; } else{ ;//start error. } XFlush(dis); return 0;}int deal_svr_ack_move_qi(char *rbuff){ char para[128]; char sbuff[1024]; int s_xindex; int s_yindex; int d_xindex; int d_yindex; int whose_qi; int iret; int result; memset(para,0,sizeof(para)); iret = data_para(rbuff,4,para); if(iret==0){ if(!strcmp(para,"OK")){ result = 0; } else{ result = -1; } } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,5,para); if(iret==0){ sscanf(para,"%d",&s_xindex); } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,6,para); if(iret==0){ sscanf(para,"%d",&s_yindex); } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,7,para); if(iret==0){ sscanf(para,"%d",&d_xindex); } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,8,para); if(iret==0){ sscanf(para,"%d",&d_yindex); } else{ return -1; } memset(para,0,sizeof(para)); iret = data_para(rbuff,9,para); if(iret==0){ sscanf(para,"%d",&whose_qi); } else{ return -1; } if(result==0){ switch(whose_qi){ case 1: qiju_draw_move_qi(s_xindex,s_yindex,d_xindex,d_yindex); break; case 0: qiju_draw_del_qi(s_xindex,s_yindex); qiju_draw_del_qi(d_xindex,d_yindex); break; case -1: qiju_draw_del_qi(s_xindex,s_yindex); break; default: break; } } else{ ;//move error. } XFlush(dis); return 0;}int deal_svr_ack_ask_peace(char *rbuff){ XFlush(dis); return 0;}int deal_svr_ack_give_up(char *rbuff){ XFlush(dis); return 0;}int deal_svr_ack_leave_qiju(char *rbuff){ char para[128]; char sbuff[1024]; int iret; int result; memset(para,0,sizeof(para)); iret = data_para(rbuff,4,para); if(iret==0){ if(!strcmp(para,"OK")){ result = 0; } else{ result = -1; } } else{ return -1; } if(result==0){ memset(map_run,0,sizeof(map_run)); glb_qiju_list[self_qiju_id].user_flag[self_player_side-1]=0; glb_qiju_list[self_qiju_id].user_index[self_player_side-1]=0; glb_qiju_list[self_qiju_id].user_num--; glb_user_list[self_userID].qi_ju_index=0; glb_user_list[self_userID].user_state = USER_INFO_STATE_NO_QI_JU; self_qiju_id = 0; self_player_side = 0; run_flag = RUN_FLAG_SELECT_QIJU; join_qiju_re_drawall(); } else{ ;//leave error. } XFlush(dis); return 0;}int data_para(char *buff,int index,char *para){ char *tmp1,*tmp2; char para_tmp[64]; int iret; tmp1=NULL; tmp2=NULL; memset(para_tmp,0,64); tmp1 = buff; for(int i=0;i<index;i++){ tmp2=strchr(tmp1,' '); if(i<index-1 && tmp2!=NULL){ tmp1=tmp2+1; } } if(tmp1!=NULL && tmp2!=NULL){ for(int j=0;j<tmp2-tmp1;j++){ para_tmp[j]=tmp1[j]; } strcpy(para,para_tmp); iret = 0; } else{ iret = -1; } return iret;}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 Send_login_to_svr(int sock,char *namestr,char *passwdstr){ char sbuff[1024]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_Login "); strcat(sbuff,"0 "); strcat(sbuff,namestr); strcat(sbuff," "); strcat(sbuff,passwdstr); strcat(sbuff," "); int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int Send_join_qiju_to_svr(int sock,int user_id,int qiju_id,int play_side){ char sbuff[1024]; char tmp[32]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_JoinQiJu "); strcat(sbuff,"0 "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",user_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",qiju_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",play_side); strcat(sbuff,tmp); strcat(sbuff," "); int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int Send_peace_to_svr(int sock){ return 0;}int Send_give_up_to_svr(int sock){ return 0;}int Send_move_qi_to_svr(int sock,int s_xindex,int s_yindex,int d_xindex,int d_yindex){ char sbuff[1024]; char tmp[32]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_MoveQi "); strcat(sbuff,"0 "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",self_userID); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",self_qiju_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",self_player_side-1); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",s_xindex); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",s_yindex); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",d_xindex); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",d_yindex); strcat(sbuff,tmp); strcat(sbuff," "); run_flag = RUN_FLAG_PLAY_QI; qiju_draw_run_qi_cmd_button(BUTTON_SHOW_FLAG_HIDE); int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int Send_start_game_to_svr(int sock,int user_id,int qiju_id,int play_side){ char sbuff[1024]; char tmp[32]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_StartGame "); strcat(sbuff,"0 "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",user_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",qiju_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",play_side); strcat(sbuff,tmp); strcat(sbuff," "); for(int i=6;i<=10;i++){ for(int j=11;j<=16;j++){ memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",map_run[i][j]); strcat(sbuff,tmp); strcat(sbuff," "); } } for(int row=0;row<17;row++){ for(int col=0;col<17;col++){ printf("%4d,",map_run[col][row]); } printf("\n"); } int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int Send_logout_to_svr(int sock,int user_id,char *user_passwd_str){ char sbuff[1024]; char tmp[32]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_Logout "); strcat(sbuff,"0 "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",user_id); strcat(sbuff,tmp); strcat(sbuff," "); strcat(sbuff,user_passwd_str); strcat(sbuff," "); int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int Send_leave_qiju_to_svr(int sock,int user_id,int qiju_id,int player_id){ char sbuff[1024]; char tmp[32]; memset(sbuff,0,sizeof(sbuff)); strcpy(sbuff,"C_LeaveQiJu "); strcat(sbuff,"0 "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",user_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",qiju_id); strcat(sbuff,tmp); strcat(sbuff," "); memset(tmp,0,sizeof(tmp)); sprintf(tmp,"%d",player_id-1); strcat(sbuff,tmp); strcat(sbuff," "); int iret=writenTCP(sock,sbuff,strlen(sbuff)); return iret;}int writenTCP(int fd, void *vptr, int n){ size_t nleft; ssize_t nwritten; char *ptr; int ntimes; //for EINTR(SIGPIPE) and EPIPE /* Add package head for context len, package head is 4 byte*/ int package_len; package_len = htonl(n); ntimes = 0; ptr = (char*)(&package_len); nleft = sizeof(int); while ( nleft > 0) { if ( (nwritten = write(fd, ptr, nleft)) <= 0) { printf("write sock for head_len error: errno=%d\n",errno); if ( errno == EINTR) { nwritten = 0; /* and call write() again */ ntimes++; if ( ntimes > 10 ) return 0; } else{ return 0; /* error */ } } nleft -= nwritten; ptr += nwritten; } /* end head pack */ ntimes = 0; ptr = (char*)vptr; nleft = (size_t) n; while (nleft > 0) { if ( (nwritten = write(fd, ptr, nleft)) <= 0) { printf("write sock error: errno=%d\n",errno); if ( errno == EINTR ){ nwritten = 0; /* and call write() again */ ntimes++; if ( ntimes > 10 ) return 0; } else{ return 0; /* error */ } } nleft -= nwritten; ptr += nwritten; } printf("writenTCP the n=%d msg=[%s]\n",n,vptr); return n;}int Draw_gb2312font16(Display *display,Drawable d,GC g
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -