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

📄 qiju.cpp

📁 linux下开发的四国军旗源代码,包括客户端和服务器端
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						dest_fly_point[dest_fly_num]=3;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,10,5)){					if(map_run[10][5]==0 || (x_dest==10 && y_dest==5)){						dest_fly_point[dest_fly_num]=4;						dest_fly_num++;					}				}				break;			case MAP_AREA_DOWN:				if(is_area_fly_reachable(area_sour,x_sour,y_sour,6,11)){					if(map_run[6][11]==0 || (x_sour==6 && y_sour==11)){						sour_fly_point[sour_fly_num]=22;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,8,11)){					if(map_run[8][11]==0 || (x_sour==8 && y_sour==11)){						sour_fly_point[sour_fly_num]=23;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,10,11)){					if(map_run[10][11]==0 || (x_sour==10 && y_sour==11)){						sour_fly_point[sour_fly_num]=24;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,6,11)){					if(map_run[6][11]==0 || (x_dest==6 && y_dest==11)){						dest_fly_point[dest_fly_num]=22;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,8,11)){					if(map_run[8][11]==0 || (x_dest==8 && y_dest==11)){						dest_fly_point[dest_fly_num]=23;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,10,11)){					if(map_run[10][11]==0 || (x_dest==10 && y_dest==11)){						dest_fly_point[dest_fly_num]=24;						dest_fly_num++;					}				}				break;			case MAP_AREA_LEFT:				if(is_area_fly_reachable(area_sour,x_sour,y_sour,5,6)){					if(map_run[5][6]==0 || (x_sour==5 && y_sour==6)){						sour_fly_point[sour_fly_num]=6;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,5,8)){					if(map_run[5][8]==0 || (x_sour==5 && y_sour==8)){						sour_fly_point[sour_fly_num]=11;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,5,10)){					if(map_run[5][10]==0 || (x_sour==5 && y_sour==10)){						sour_fly_point[sour_fly_num]=16;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,5,6)){					if(map_run[5][6]==0 || (x_dest==5 && y_dest==6)){						dest_fly_point[dest_fly_num]=6;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,5,8)){					if(map_run[5][8]==0 || (x_dest==5 && y_dest==8)){						dest_fly_point[dest_fly_num]=11;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,5,10)){					if(map_run[5][10]==0 || (x_dest==5 && y_dest==10)){						dest_fly_point[dest_fly_num]=16;						dest_fly_num++;					}				}				break;			case MAP_AREA_RIGHT:				if(is_area_fly_reachable(area_sour,x_sour,y_sour,11,6)){					if(map_run[11][6]==0 || (x_sour==11 && y_sour==6)){						sour_fly_point[sour_fly_num]=10;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,11,8)){					if(map_run[11][8]==0 || (x_sour==11 && y_sour==8)){						sour_fly_point[sour_fly_num]=15;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,11,10)){					if(map_run[11][10]==0 || (x_sour==11 && y_sour==10)){						sour_fly_point[sour_fly_num]=20;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,11,6)){					if(map_run[11][6]==0 || (x_dest==11 && y_dest==6)){						dest_fly_point[dest_fly_num]=10;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,11,8)){					if(map_run[11][8]==0 || (x_dest==11 && y_dest==8)){						dest_fly_point[dest_fly_num]=15;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,11,10)){					if(map_run[11][10]==0 || (x_dest==11 && y_dest==10)){						dest_fly_point[dest_fly_num]=20;						dest_fly_num++;					}				}				break;			default:				break;			}		}	}	else{		sour_fly_point[0]=map_index_to_fly_point(x_sour,y_sour);		sour_fly_num=1;		dest_fly_point[0]=map_index_to_fly_point(x_dest,y_dest);		dest_fly_num=1;	}	if(!reached_flag){		//printf("the sour_fly_num=%d,the dest_fly_num=%d\n",sour_fly_num,dest_fly_num);		for(int i=0,j=0;(i<sour_fly_num && dest_fly_num>0);){			//printf("loop the i=%d,j=%d\n",i,j);			memset(fly_search_point,0,sizeof(fly_search_point));			fly_search_num = 0;			if(is_fly_point_reachable(sour_fly_point[i],dest_fly_point[j])){				reached_flag=1;				break;			}			j++;			if(j>=dest_fly_num){				i++;				j=0;			}		}	}	//printf("reached_flag =%d!!!!!!!!!!!!!!\n",reached_flag);	return reached_flag;}int is_y_search(int y0,int x_sour,int x_dest,int x_search,int y_search){	int stop_point;	int reached;	stop_point = 0;	reached = 0;	if(x_sour>x_dest){		for(int i=x_sour-1;i>=x_dest;i--){			if(x_search==i && y_search==y0){				reached = 1;				break;			}			else if(map_run[i][y0]>0){				stop_point=1;				break;			}		}       	}       	else if(x_sour<x_dest){		for(int i=x_sour+1;i<=x_dest;i++){			if(x_search==i && y_search==y0){				reached = 1;				break;			}			else if(map_run[i][y0]>0){				stop_point=1;				break;			}		}	}	else{		if(x_search==x_dest && y_search==y0){			reached = 1;		}	}	if(stop_point==0 && reached==0){		return 0;	}	else if(stop_point==0){		return 1;	}	else{		return -1;	}}int is_x_search(int x0,int y_sour,int y_dest,int x_search,int y_search){	int break_point;	int reached;	int i;	break_point = 0;	reached = 0;	if(y_sour>y_dest){		for(i=y_sour-1;i>=y_dest;i--){			if(x_search==x0 && y_search==i){				reached = 1;				break;			}			else if(map_run[x0][i]>0){				break_point=1;				break;			}		}       	}       	else if(y_sour<y_dest){		for(i=y_sour+1;i<=y_dest;i++){			if(x_search==x0 && y_search==i){				reached = 1;				break;			}			else if(map_run[x0][i]>0){				break_point=1;				break;			}		}	}	else{		if(x_search==x0 && y_search==y_dest){			reached = 1;		}	}	if(break_point==0 && reached==0){		return 0;	}	else if(break_point==0){		return 1;	}	else{		return -1;	}}int is_area_search(int x0,int y0,int x1,int y1,int x_sour,int y_sour,int x_dest,int y_dest){	int iret;	iret = 0;	if(x_sour==x0){		iret = is_x_search(x0,y_sour,y0,x_dest,y_dest);		if(iret==0){			iret = is_y_search(y0,x0,x1,x_dest,y_dest);			if(iret==0){				iret = is_x_search(x1,y0,y1,x_dest,y_dest);				if(iret==0){					iret = is_y_search(y1,x1,x0,x_dest,y_dest);					if(iret==0){						iret = is_x_search(x0,y1,y_sour-1,x_dest,y_dest);					}				}			}		}		if(iret==-1){//breaked!			iret = is_x_search(x0,y_sour,y1,x_dest,y_dest);			if(iret==0){				iret = is_y_search(y1,x0,x1,x_dest,y_dest);				if(iret==0){					iret = is_x_search(x1,y1,y0,x_dest,y_dest);					if(iret==0){						iret = is_y_search(y0,x1,x0,x_dest,y_dest);						if(iret==0){							iret = is_x_search(x0,y0,y_sour-1,x_dest,y_dest);						}					}				}			}		}	}	else if(x_sour==x1){		iret = is_x_search(x1,y_sour,y1,x_dest,y_dest);		if(iret==0){			iret = is_y_search(y1,x1,x0,x_dest,y_dest);			if(iret==0){				iret = is_x_search(x0,y1,y0,x_dest,y_dest);				if(iret==0){					iret = is_y_search(y0,x0,x1,x_dest,y_dest);					if(iret==0){						iret = is_x_search(x1,y0,y_sour-1,x_dest,y_dest);					}				}			}		}		if(iret ==-1){//breaked!			iret = is_x_search(x1,y_sour,y0,x_dest,y_dest);			if(iret==0){				iret = is_y_search(y0,x1,x0,x_dest,y_dest);				if(iret==0){					iret = is_x_search(x0,y0,y1,x_dest,y_dest);					if(iret==0){						iret = is_y_search(y1,x0,x1,x_dest,y_dest);						if(iret==0){							iret = is_x_search(x1,y1,y_sour+1,x_dest,y_dest);						}					}				}			}		}	}	else if(y_sour==y0){		iret = is_y_search(y0,x_sour,x1,x_dest,y_dest);		if(iret==0){			iret = is_x_search(x1,y0,y1,x_dest,y_dest);			if(iret==0){				iret = is_y_search(y1,x1,x0,x_dest,y_dest);				if(iret==0){					iret = is_x_search(x0,y1,y0,x_dest,y_dest);					if(iret == 0){						iret = is_y_search(y0,x0,x_sour-1,x_dest,y_dest);					}				}			}		}		if(iret == -1){//breaked!			iret = is_y_search(y0,x_sour,x0,x_dest,y_dest);			if(iret==0){				iret = is_x_search(x0,y0,y1,x_dest,y_dest);				if(iret==0){					iret = is_y_search(y1,x0,x1,x_dest,y_dest);					if(iret==0){						iret = is_x_search(x1,y1,y0,x_dest,y_dest);						if(iret==0){							iret = is_y_search(y0,x1,x_sour+1,x_dest,y_dest);						}					}				}			}		}	}	else if(y_sour==y1){		iret = is_y_search(y1,x_sour,x0,x_dest,y_dest);		if(iret==0){			iret = is_x_search(x0,y1,y0,x_dest,y_dest);			if(iret==0){				iret = is_y_search(y0,x0,x1,x_dest,y_dest);				if(iret==0){					iret = is_x_search(x1,y0,y1,x_dest,y_dest);					if(iret==0){						iret = is_y_search(y1,x1,x_sour+1,x_dest,y_dest);					}				}			}		}		if(iret == -1){//breaked!			iret = is_y_search(y1,x_sour,x1,x_dest,y_dest);			if(iret==0){				iret = is_x_search(x1,y1,y0,x_dest,y_dest);				if(iret==0){					iret = is_y_search(y0,x1,x0,x_dest,y_dest);					if(iret==0){						iret = is_x_search(x0,y0,y1,x_dest,y_dest);						if(iret==0){							iret = is_y_search(y1,x0,x_sour-1,x_dest,y_dest);						}					}				}			}		}	}	int irtn=0;	if(iret==1){//searched;		irtn =1;	}	else{		if(x_sour==x_dest && y_sour==y_dest)			irtn=1;		else			irtn=0;	}	//printf("is_area_search return =%d\n",irtn);	return irtn;}int is_area_fly_reachable(int area_flag,int x_sour,int y_sour,int x_dest,int y_dest){	int iret;	if(which_area(x_sour,y_sour)!=which_area(x_dest,y_dest)) return 0;	iret = 0;	switch(area_flag){	case MAP_AREA_UP:		iret=is_area_search(6,1,10,5,x_sour,y_sour,x_dest,y_dest);		break;	case MAP_AREA_DOWN:		iret=is_area_search(6,11,10,15,x_sour,y_sour,x_dest,y_dest);		break;	case MAP_AREA_LEFT:		iret=is_area_search(1,6,5,10,x_sour,y_sour,x_dest,y_dest);		break;	case MAP_AREA_RIGHT:		iret=is_area_search(11,6,15,10,x_sour,y_sour,x_dest,y_dest);		break;	default:		break;	}	return iret;}int which_area(int x_sour, int y_sour){	if(x_sour>=6 && x_sour<=10 && y_sour>=0 && y_sour<=5)		return MAP_AREA_UP;	else if(x_sour>=0 && x_sour<=5 && y_sour>=6 && y_sour<=10)		return MAP_AREA_LEFT;	else if(x_sour>=6 && x_sour<=10 && y_sour>=11 && y_sour<=16)		return MAP_AREA_DOWN;	else if(x_sour>=11 && x_sour<=16 && y_sour>=6 && y_sour<=10)		return MAP_AREA_RIGHT;	else if(x_sour>=6 && x_sour<=10 && y_sour>=6 && y_sour<=10)		return MAP_AREA_CENTER;	return -1;}int fly_point_to_map_index(int fly_point,int *x_map,int *y_map)

⌨️ 快捷键说明

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