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

📄 junqi_server.cpp

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