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

📄 junqi_server.cpp

📁 linux下开发的四国军旗源代码,包括客户端和服务器端
💻 CPP
📖 第 1 页 / 共 4 页
字号:
							Send_join_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id);						}					}*/					//send join qiju to qiju players;					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_join_qiju_to_player(glb_user_list[i].tcpFD,user_index,qiju_id,player_id);						}					}					glb_user_list[user_index].qi_ju_index = qiju_id;					glb_user_list[user_index].user_state=USER_INFO_STATE_INIT_QI_MAP;					glb_qi_ju_list[qiju_id].user_flag[player_id]=1;					glb_qi_ju_list[qiju_id].user_index[player_id]=1;					glb_qi_ju_list[qiju_id].user_num++;				}			}			else{				int i;				/*				//send join qiju to qiju players				for(i=0;i<4;i++){					if(glb_qi_ju_list[qiju_id].user_flag[i]==1){						Send_join_qiju_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,user_index,qiju_id,player_id);					}				}*/				//send join qiju to qiju players				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_join_qiju_to_player(glb_user_list[i].tcpFD,user_index,qiju_id,player_id);					}				}								strcpy(result,"OK");				glb_user_list[user_index].qi_ju_index=qiju_id;				glb_user_list[user_index].user_state=USER_INFO_STATE_INIT_QI_MAP;				glb_qi_ju_list[qiju_id].user_flag[player_id]=1;				glb_qi_ju_list[qiju_id].user_index[player_id]=user_index;				glb_qi_ju_list[qiju_id].user_num++;			}		}		else{			strcpy(result,"FAIL");		}	}	else{		strcpy(result,"FAIL");	}	memset(sbuff,0,sizeof(sbuff));	strcpy(sbuff,"Ack ");	strcat(sbuff,para);	strcat(sbuff," C_JoinQiJu ");	strcat(sbuff,result);	strcat(sbuff," ");	memset(para,0,sizeof(para));	sprintf(para,"%d",user_index);	strcat(sbuff,para);	strcat(sbuff," ");	memset(para,0,sizeof(para));	sprintf(para,"%d",qiju_id);	strcat(sbuff,para);	strcat(sbuff," ");	memset(para,0,sizeof(para));	sprintf(para,"%d",player_id);	strcat(sbuff,para);	strcat(sbuff," ");	for(int i=0;i<4;i++){		if(glb_qi_ju_list[qiju_id].user_flag[i]==1){			memset(para,0,sizeof(para));			sprintf(para,"%d",glb_qi_ju_list[qiju_id].user_index[i]);			strcat(sbuff,para);			strcat(sbuff," ");			memset(para,0,sizeof(para));			sprintf(para,"%d",glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state);			strcat(sbuff,para);			strcat(sbuff," ");		}		else{			memset(para,0,sizeof(para));			sprintf(para,"%d",0);			strcat(sbuff,para);			strcat(sbuff," ");			memset(para,0,sizeof(para));			sprintf(para,"%d",0);			strcat(sbuff,para);			strcat(sbuff," ");		}	}	writenTCP(glb_user_list[user_index].tcpFD,sbuff,strlen(sbuff));	return 0;}int deal_cli_start_game(char *rbuff,int user_index){	char    para[128];	char	sbuff[1024];	int	player_id;	int	qiju_id;	int	user_id;	int	tid;	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,sizeof(para));	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,sizeof(para));	iret = data_para(rbuff,2,para);	if(iret == 0){		sscanf(para,"%d",&tid);	}	else{		return -1;	}	char	result[8];	memset(result,0,sizeof(result));	if(user_id==user_index){		if(glb_user_list[user_index].qi_ju_index==qiju_id && glb_user_list[user_index].used_flag==1 && glb_user_list[user_index].user_connect_flag==USER_CONNECT_FLAG_LOGINED && glb_user_list[user_index].user_state==USER_INFO_STATE_INIT_QI_MAP){			for(int ii=0;ii<4;ii++){				if(glb_qi_ju_list[qiju_id].user_flag[ii]==1 && glb_qi_ju_list[qiju_id].user_index[ii]!=user_index){					//send S_PlayerStart to player ii;					Send_playerstart_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[ii]].tcpFD,user_id,qiju_id,player_id);				}			}			strcpy(result,"OK");			//save the qi map;			Save_the_qi_map(qiju_id,player_id,rbuff);			glb_user_list[user_index].user_state=USER_INFO_STATE_START_PLAY;			if(glb_qi_ju_list[qiju_id].user_num==4){				int	inot_ready;				inot_ready=-1;				for(int i=0;i<4;i++){					if(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].user_state!=USER_INFO_STATE_START_PLAY){						inot_ready=i;						break;					}				}				if(inot_ready==-1){					glb_qi_ju_list[qiju_id].state=QI_JU_STATE_START_PLAY;					//send run_qi Ring to player 0;					Send_run_qi_ring_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[0]].tcpFD,glb_qi_ju_list[qiju_id].user_index[0],qiju_id,0);					glb_qi_ju_list[qiju_id].cur_run_user = 0;				}			}		}		else{			strcpy(result,"FAIL");		}	}	else{		strcpy(result,"FAIL");	}	memset(sbuff,0,sizeof(sbuff));	strcpy(sbuff,"Ack ");	strcat(sbuff,para);	strcat(sbuff," C_StartGame ");	strcat(sbuff,result);	strcat(sbuff," ");	writenTCP(glb_user_list[user_index].tcpFD,sbuff,strlen(sbuff));	return 0;}int deal_cli_move_qi(char *rbuff,int user_index){	char    para[128];	char	sbuff[1024];	int	player_id;	int	qiju_id;	int	user_id;	int	tid;	int	s_xindex, s_yindex, d_xindex, d_yindex;	int	qi_s_xindex, qi_s_yindex, qi_d_xindex, qi_d_yindex;	int	sn_s_xindex, sn_s_yindex, sn_d_xindex, sn_d_yindex;	int iret;	int	igame_over_flag;	memset(para,0,sizeof(para));	iret = data_para(rbuff,9,para);	if(iret == 0){		sscanf(para,"%d",&d_yindex);	}	else{		return -1;	}	memset(para,0,sizeof(para));	iret = data_para(rbuff,8,para);	if(iret == 0){		sscanf(para,"%d",&d_xindex);	}	else{		return -1;	}	memset(para,0,sizeof(para));	iret = data_para(rbuff,7,para);	if(iret == 0){		sscanf(para,"%d",&s_yindex);	}	else{		return -1;	}	memset(para,0,sizeof(para));	iret = data_para(rbuff,6,para);	if(iret == 0){		sscanf(para,"%d",&s_xindex);	}	else{		return -1;	}	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;	}	char	result[8];	memset(result,0,sizeof(result));	int	whose_qi;	if(user_id==user_index && player_id<4 && player_id>=0){		if(glb_user_list[user_index].qi_ju_index==qiju_id && glb_user_list[user_index].user_state==USER_INFO_STATE_START_PLAY){			if(glb_qi_ju_list[qiju_id].state==QI_JU_STATE_START_PLAY && glb_qi_ju_list[qiju_id].user_flag[player_id]==1 && glb_qi_ju_list[qiju_id].user_index[player_id]==user_index && glb_qi_ju_list[qiju_id].cur_run_user==player_id){				strcpy(result,"OK");				switch(player_id){				case 0:					qi_s_xindex = s_xindex;					qi_s_yindex = s_yindex;					qi_d_xindex = d_xindex;					qi_d_yindex = d_yindex;					break;				case 1:					Exchange_x_y_backword_90(s_xindex,s_yindex,qi_s_xindex,qi_s_yindex);					Exchange_x_y_backword_90(d_xindex,d_yindex,qi_d_xindex,qi_d_yindex);					break;				case 2:					Exchange_x_y_forword_180(s_xindex,s_yindex,qi_s_xindex,qi_s_yindex);					Exchange_x_y_forword_180(d_xindex,d_yindex,qi_d_xindex,qi_d_yindex);					break;				case 3:					Exchange_x_y_forword_90(s_xindex,s_yindex,qi_s_xindex,qi_s_yindex);					Exchange_x_y_forword_90(d_xindex,d_yindex,qi_d_xindex,qi_d_yindex);					break;				}				//Judge the eat qi;				igame_over_flag = 0;				int ieat_qi;				ieat_qi=Judge_eat_qi(glb_qi_ju_list[qiju_id].map_run[qi_s_xindex][qi_s_yindex],glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]);				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;								sn_d_xindex = qi_d_xindex;								sn_d_yindex = qi_d_yindex;								break;							case 1:								Exchange_x_y_forword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_forword_90(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							case 2:								Exchange_x_y_forword_180(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_forword_180(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							case 3:								Exchange_x_y_backword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_backword_90(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							}							//Send move qi to the all other players.							Send_move_qi_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,sn_s_xindex,sn_s_yindex,sn_d_xindex,sn_d_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));					//move qi from s to d;					glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]=glb_qi_ju_list[qiju_id].map_run[qi_s_xindex][qi_s_yindex];					glb_qi_ju_list[qiju_id].map_run[qi_s_xindex][qi_s_yindex]=0;					//eat OK;					if(glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]%100==QI_JUNQI_SYMBOL){						//user was killed.						//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==glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]/100){									glb_qi_ju_list[qiju_id].map_run[kk][jj]=0;								}							}						}						//send S_KillPlayer to other client;						int i;						for(i=0;i<4;i++){							if(glb_qi_ju_list[qiju_id].user_flag[i]==1){								Send_kill_player_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[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 ){							//send S_GameOver to all 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_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(ieat_qi==0){					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;								sn_d_xindex = qi_d_xindex;								sn_d_yindex = qi_d_yindex;								break;							case 1:								Exchange_x_y_forword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_forword_90(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							case 2:								Exchange_x_y_forword_180(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_forword_180(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							case 3:								Exchange_x_y_backword_90(qi_s_xindex,qi_s_yindex,sn_s_xindex,sn_s_yindex);								Exchange_x_y_backword_90(qi_d_xindex,qi_d_yindex,sn_d_xindex,sn_d_yindex);								break;							}							//Send del qi_s qi_d 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);							Send_del_qi_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[i]].tcpFD,sn_d_xindex,sn_d_yindex);						}					}					whose_qi=0;					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 died all.					if(glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]%100==QI_JUNQI_SYMBOL){						//user was killed.						//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==glb_qi_ju_list[qiju_id].map_run[qi_d_xindex][qi_d_yindex]/100){									glb_qi_ju_list[qiju_id].map_run[kk][jj]=0;								}							}						}						//send S_KillPlayer to other client;						int i;						for(i=0;i<4;i++){							if(glb_qi_ju_list[qiju_id].user_flag[i]==1){								Send_kill_player_to_player(glb_user_list[glb_qi_ju_list[qiju_id].user_index[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 ){							//send S_GameOver to all player;							for(i=0;i<4;i++){								if(glb_qi_ju_list[qiju_id].user_flag[i]==1){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -