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

📄 qiju.cpp

📁 linux下开发的四国军旗源代码,包括客户端和服务器端
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{	int tmp_x;	int tmp_y;	switch(fly_point%5){	case 1:	case 2:		tmp_x = fly_point%5+5-1;		break;	case 3:		tmp_x = fly_point%5+5;		break;	case 4:		tmp_x = fly_point%5+5+1;		break;	case 0:		tmp_x = fly_point%5+5+1+5;		break;	default:		break;	}	switch((fly_point+5-1)/5){	case 1:		tmp_y=5;		break;	case 2:		tmp_y=6;		break;	case 3:		tmp_y=8;		break;	case 4:		tmp_y=10;		break;	case 5:		tmp_y=11;		break;	default:		break;	}	*y_map=tmp_y;	*x_map=tmp_x;	return 0;}int map_index_to_fly_point(int x_map,int y_map){	int x_tmp;	int y_tmp;	switch(x_map){	case 7:	case 8:		x_tmp=7;		break;	case 9:	case 10:		x_tmp=8;		break;	case 11:		x_tmp=9;		break;	default:		x_tmp=x_map;		break;	}	switch(y_map){	case 7:	case 8:		y_tmp=7;		break;	case 9:	case 10:		y_tmp=8;		break;	case 11:		y_tmp=9;		break;	default:		y_tmp=y_map;		break;	}	return (y_tmp-5)*5+x_tmp-5+1;}int is_fly_point_reachable(int fly_point_sour,int fly_point_dest){	fly_search_point[fly_search_num]=fly_point_sour;	fly_search_num++;	//printf("is_fly_point_reachable called: fly_point_sour=%d,fly_point_dest=%d\n",fly_point_sour,fly_point_dest);//	printf("fly_center_link_point[%d].point_num=%d,fly_center_link_point[%d].point_name=%d\n",fly_point_sour,fly_center_link_point[fly_point_sour].point_num,fly_point_sour,fly_center_link_point[fly_point_sour].point_name[0]);	for(int i=0;i<fly_center_link_point[fly_point_sour].point_num;i++){		if(fly_center_link_point[fly_point_sour].point_name[i]==fly_point_dest && fly_center_link_point[fly_point_sour].point_type[i]==FLY_LINK_POINT_TYPE_NORMAL){			return 1;		}	}	for(int i=0;i<fly_center_link_point[fly_point_sour].point_num;i++){		int x_map,y_map;		fly_point_to_map_index(fly_center_link_point[fly_point_sour].point_name[i],&x_map,&y_map);		//printf("The  .point_name=%d,x_map=%d,y_map=%d\n",fly_center_link_point[fly_point_sour].point_name[i],x_map,y_map);		if(fly_center_link_point[fly_point_sour].point_type[i]==FLY_LINK_POINT_TYPE_NORMAL				&& map_run[x_map][y_map]==0){			int finded=0;			for(int j=0;j<fly_search_num;j++){				if(fly_search_point[j]==fly_center_link_point[fly_point_sour].point_name[i]){					finded=1;				}			}			if(!finded){				if(is_fly_point_reachable(fly_center_link_point[fly_point_sour].point_name[i],fly_point_dest)){					return 1;				}			}		}		else if(fly_center_link_point[fly_point_sour].point_type[i]==FLY_LINK_POINT_TYPE_FUNC				&& ((map_run[x_map][y_map]==0) || (fly_center_link_point[fly_point_sour].point_name[i]==fly_point_dest))){			int finded=0;			for(int j=0;j<fly_search_num;j++){				if(fly_search_point[j]==fly_center_link_point[fly_point_sour].point_name[i]){					finded=1;				}			}			if(!finded){				if(is_area_reachable(fly_point_sour,fly_center_link_point[fly_point_sour].point_name[i])){					if(is_fly_point_reachable(fly_center_link_point[fly_point_sour].point_name[i],fly_point_dest)){						return 1;					}				}			}		}	}	return 0;}int is_area_reachable(int point_sour,int point_dest){	int	line_flag[3];	int	i;	int	iret;	switch(point_sour){	case 2:	case 3:	case 4:		if(point_dest!=2 && point_dest!=3 && point_dest!=4) return 0;		memset(line_flag,0,sizeof(line_flag));		if(map_run[7][5]>0)	line_flag[0]=1;		if(map_run[9][5]>0)	line_flag[1]=1;		for(i=4;i>=1;i--){			if(map_run[6][i]>0){				line_flag[2]=1;				break;			}		}		for(i=7;i<=10;i++){			if(map_run[i][1]>0){				line_flag[2]=1;				break;			}		}		for(i=2;i<5;i++){			if(map_run[10][i]>0){				line_flag[2]=1;				break;			}		}		if(line_flag[0]+line_flag[1]+line_flag[2]==0){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==1){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==2){			if(line_flag[0]==0 && ((point_sour==2 && point_dest==3)||(point_sour==3 && point_dest==2))){				iret = 1;			}			else if(line_flag[1]==0 && ((point_sour==3 && point_dest==4)||(point_sour==4 && point_dest==3))){				iret = 1;			}			else if(line_flag[2]==0 && ((point_sour==2 && point_dest==4)||(point_sour==4 && point_dest==2))){				iret = 1;			}			else{				iret = 0;			}		}		else{			iret = 0;		}		break;	case 6:	case 11:	case 16:		if(point_dest!=6 && point_dest!=11 && point_dest!=16) return 0;		memset(line_flag,0,sizeof(line_flag));		if(map_run[5][7]>0)	line_flag[0]=1;		if(map_run[5][9]>0)	line_flag[1]=1;		for(i=4;i>=1;i--){			if(map_run[i][6]>0){				line_flag[2]=1;				break;			}		}		for(i=7;i<=10;i++){			if(map_run[1][i]>0){				line_flag[2]=1;				break;			}		}		for(i=2;i<5;i++){			if(map_run[i][10]>0){				line_flag[2]=1;				break;			}		}		if(line_flag[0]+line_flag[1]+line_flag[2]==0){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==1){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==2){			if(line_flag[0]==0 && ((point_sour==6 && point_dest==11)||(point_sour==11 && point_dest==6))){				iret = 1;			}			else if(line_flag[1]==0 && ((point_sour==11 && point_dest==16)||(point_sour==16 && point_dest==11))){				iret = 1;			}			else if(line_flag[2]==0 && ((point_sour==6 && point_dest==16)||(point_sour==16 && point_dest==6))){				iret = 1;			}			else{				iret = 0;			}		}		else{			iret = 0;		}		break;	case 10:	case 15:	case 20:		if(point_dest!=10 && point_dest!=15 && point_dest!=20) return 0;		memset(line_flag,0,sizeof(line_flag));		if(map_run[11][7]>0)	line_flag[0]=1;		if(map_run[11][9]>0)	line_flag[1]=1;		for(i=12;i<=15;i--){			if(map_run[i][6]>0){				line_flag[2]=1;				break;			}		}		for(i=7;i<=10;i++){			if(map_run[15][i]>0){				line_flag[2]=1;				break;			}		}		for(i=12;i<15;i++){			if(map_run[i][10]>0){				line_flag[2]=1;				break;			}		}		if(line_flag[0]+line_flag[1]+line_flag[2]==0){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==1){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==2){			if(line_flag[0]==0 && ((point_sour==10 && point_dest==15)||(point_sour==15 && point_dest==10))){				iret = 1;			}			else if(line_flag[1]==0 && ((point_sour==15 && point_dest==20)||(point_sour==20 && point_dest==15))){				iret = 1;			}			else if(line_flag[2]==0 && ((point_sour==10 && point_dest==20)||(point_sour==20 && point_dest==10))){				iret = 1;			}			else{				iret = 0;			}		}		else{			iret = 0;		}		break;	case 22:	case 23:	case 24:		if(point_dest!=22 && point_dest!=23 && point_dest!=24) return 0;		memset(line_flag,0,sizeof(line_flag));		if(map_run[7][11]>0)	line_flag[0]=1;		if(map_run[9][11]>0)	line_flag[1]=1;		for(i=12;i<=15;i++){			if(map_run[6][i]>0){				line_flag[2]=1;				break;			}		}		for(i=7;i<=10;i++){			if(map_run[i][15]>0){				line_flag[2]=1;				break;			}		}		for(i=12;i<15;i++){			if(map_run[10][i]>0){				line_flag[2]=1;				break;			}		}		if(line_flag[0]+line_flag[1]+line_flag[2]==0){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==1){			iret = 1;		}		else if(line_flag[0]+line_flag[1]+line_flag[2]==2){			if(line_flag[0]==0 && ((point_sour==22 && point_dest==23)||(point_sour==23 && point_dest==22))){				iret = 1;			}			else if(line_flag[1]==0 && ((point_sour==23 && point_dest==24)||(point_sour==24 && point_dest==23))){				iret = 1;			}			else if(line_flag[2]==0 && ((point_sour==22 && point_dest==24)||(point_sour==24 && point_dest==22))){				iret = 1;			}			else{				iret = 0;			}		}		else{			iret = 0;		}		break;	default:		iret = 0;		break;	}	return iret;}int qiju_draw_qi(int qi_symbol,int x,int y,int side,int selected){	if(selected==0){		XSetForeground(dis,global_gc,black_col.pixel);	}	else if(selected==1){		XSetForeground(dis,global_gc,WhitePixel(dis,0));	}	XDrawRectangle(dis,win,global_gc,x,y,30,20);	switch(side){	case PLAYER_SIDE_A:		XSetForeground(dis,global_gc,PLAYER_A_COLOR);		break;	case PLAYER_SIDE_B:		XSetForeground(dis,global_gc,PLAYER_B_COLOR);		break;	case PLAYER_SIDE_C:		XSetForeground(dis,global_gc,PLAYER_C_COLOR);		break;	case PLAYER_SIDE_D:		XSetForeground(dis,global_gc,PLAYER_D_COLOR);		break;	default:		return -1;	}	XFillRectangle(dis,win,global_gc,x+1,y+1,28,18);	XSetForeground(dis,global_gc,WhitePixel(dis,0));	switch(qi_symbol){	case QI_GONGBING_SYMBOL://工兵		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+0,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+0,2);		break;	case QI_PAIZHANG_SYMBOL://排长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+2,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+2,2);		break;	case QI_LIANZHANG_SYMBOL://连长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+4,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+4,2);		break;	case QI_YINGZHANG_SYMBOL://营长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+6,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+6,2);		break;	case QI_TUANZHANG_SYMBOL://团长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+8,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+8,2);		break;	case QI_LVZHANG_SYMBOL://旅长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+10,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+10,2);		break;	case QI_SHIZHANG_SYMBOL://师长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+12,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+12,2);		break;	case QI_JUNZHANG_SYMBOL://军长		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+14,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+14,2);		break;	case QI_SILING_SYMBOL://司令		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+16,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+16,2);		break;	case QI_DILEI_SYMBOL://地雷		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+18,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+18,2);		break;	case QI_ZHADAN_SYMBOL://炸弹		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+20,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+20,2);		break;	case QI_JUNQI_SYMBOL://军棋		//XDrawString16(dis,win,global_gc,x+3,y+15,glb_name_str+22,2);		Draw_gb2312font16(dis,win,global_gc,x+3,y+4,glb_name_str+22,2);		break;	case QI_UNKNOWN_SYMBOL:		break;	default:		break;	}	return 0;}int qiju_draw_bingzhan(int x,int y)

⌨️ 快捷键说明

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