⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 junqi_client.cpp

📁 linux下开发的四国军旗源代码,包括客户端和服务器端
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				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 + -