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

📄 qiju.cpp

📁 linux下开发的四国军旗源代码,包括客户端和服务器端
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//###################################################//#Created: LIP//#Description:	The JunQi run code for JunQi(four country)//#OS :		linux.//#My QQ number: 13066543//#My e_mail: lip94101@btamail.net.cn//####################################################include <stdio.h>#include <stdlib.h>#include <X11/Xlib.h>#include <X11/Xutil.h>#include <X11/Xos.h>#include <X11/Xatom.h>#include <X11/keysym.h>#include <X11/Intrinsic.h>#include "junqi_type.h"#include "const_define.h"CONST_VAR_EXTERNextern XChar2b	glb_name_str[32];extern Fly_Next_Point_s	fly_center_link_point[25+1];extern int			fly_search_point[25];extern int			fly_search_num;extern int map_run[17][17];extern Display *dis;extern Window win;extern GC global_gc;extern XColor green_col;extern XColor blue_col;extern XColor red_col;extern XColor yellow_col;extern XColor orange_col;extern XColor black_col;extern XColor gray_col;extern Colormap colormap;extern XFontStruct *font_info;extern Font	my_font;extern XImage *pbak_image;extern XColor play_a_col;extern XColor play_b_col;extern XColor play_c_col;extern XColor play_d_col;#define PLAYER_A_COLOR	play_a_col.pixel#define PLAYER_B_COLOR	play_b_col.pixel#define PLAYER_C_COLOR	play_c_col.pixel#define PLAYER_D_COLOR	play_d_col.pixelextern int self_userID;extern int self_qiju_id;extern int self_player_side;extern int run_flag;extern int qi_selected_flag;extern int select_qi_xindex;extern int select_qi_yindex;extern CliUserInfo_s  glb_user_list[MAX_USER_INFO_NUM+1];extern CliQI_Ju_s	glb_qiju_list[MAX_QI_JU_NUM+1];int draw_button_exit();extern int Draw_gb2312font16(Display *display,Drawable d,GC gc,int x,int y,XChar2b *string,int length);#include "cli_qiju_func.h"int qiju_init_draw(){	XSetForeground(dis,global_gc,gray_col.pixel);	XFillRectangle(dis,win,global_gc,0,0,789,589);	XSetForeground(dis,global_gc,red_col.pixel);	XDrawRectangle(dis,win,global_gc,0,0,789,589);		qiju_draw_center_map();	qiju_draw_downside_map();	qiju_draw_upside_map();	qiju_draw_leftside_map();	qiju_draw_rightside_map();	memset(map_run,0,sizeof(map_run));	qiju_draw_self_qi_map_play_init();	run_flag = RUN_FLAG_INIT_QI;	qiju_draw_init_cmd_button(BUTTON_SHOW_FLAG_SHOWED);	draw_button_exit();	qiju_draw_show_player();	return 0;}int qiju_redraw_screen(){	XSetForeground(dis,global_gc,gray_col.pixel);	XFillRectangle(dis,win,global_gc,0,0,789,589);	XSetForeground(dis,global_gc,red_col.pixel);	XDrawRectangle(dis,win,global_gc,0,0,789,589);		qiju_draw_center_map();	qiju_draw_downside_map();	qiju_draw_upside_map();	qiju_draw_leftside_map();	qiju_draw_rightside_map();	for(int i=0;i<17;i++){		for(int j=0;j<17;j++){			if(map_run[i][j]/100>0){				qiju_draw_qi(map_run[i][j]%100,18+35*i-15,18-10+35*j,map_run[i][j]/100,(i==select_qi_xindex && j==select_qi_yindex && qi_selected_flag==1) ? 1:0);			}			else if(map_run[i][j]>0){				switch(map_run[i][j]){				case BUTTON_CMD_INIT_SRART_GAME:					qiju_draw_init_cmd_button(BUTTON_SHOW_FLAG_SHOWED);					break;				case BUTTON_CMD_RUN_QI_PEACE:				case BUTTON_CMD_RUN_QI_GIVEUP:					qiju_draw_run_qi_cmd_button(BUTTON_SHOW_FLAG_SHOWED);					break;				default:					break;				}			}		}	}	printf("The qiju_redraw_screen called!!!!\n");	draw_button_exit();	qiju_draw_show_player();	return 0;}int is_y_reachable(int y0,int x_sour,int x_dest){	int istep;	int stop_point;	stop_point = 0;	if(x_sour>x_dest){		istep=x_sour-x_dest;		for(int i=1;i<istep;i++){		       	if(map_road_flag[x_dest+i][y0]=='1' || map_road_flag[x_dest+i][y0]==' ' || map_run[x_dest+i][y0]!=0){			       	stop_point = 1;				break;		       	} 		}       	}       	else{	       	istep=x_dest-x_sour;	       	for(int i=1;i<istep;i++){		       	if(map_road_flag[x_sour+i][y0]=='1' || map_road_flag[x_sour+i][y0]==' ' || map_run[x_sour+i][y0]!=0){			       	stop_point = 1;				break;		       	}	       	}	}	if(istep>1){		if(map_road_flag[x_dest][y0]=='1' || map_road_flag[x_sour][y0]=='1'){			stop_point = 1;		}	}	return stop_point;}int is_x_reachable(int x0,int y_sour,int y_dest){	int istep;	int stop_point;	stop_point = 0;	if(y_sour>y_dest){		istep=y_sour-y_dest;		for(int i=1;i<istep;i++){		       	if(map_road_flag[x0][y_dest+i]=='1' || map_road_flag[x0][y_dest+i]==' ' || map_run[x0][y_dest+i]!=0){			       	stop_point = 1;				break;		       	} 		}       	}       	else{	       	istep=y_dest-y_sour;	       	for(int i=1;i<istep;i++){		       	if(map_road_flag[x0][y_sour+i]=='1' || map_road_flag[x0][y_sour+i]==' ' || map_run[x0][y_sour+i]!=0){			       	stop_point = 1;				break;		       	}	       	}	}	if(istep>1){		if(map_road_flag[x0][y_dest]=='1' || map_road_flag[x0][y_sour]=='1'){			stop_point = 1;		}	}	return stop_point;}int is_find_fly_way(int x_sour,int y_sour,int x_dest,int y_dest){	int area_sour,area_dest;	int sour_fly_point[3];	int sour_fly_num;	int dest_fly_point[3];	int dest_fly_num;	int reached_flag=0;	area_sour=which_area(x_sour,y_sour);	area_dest=which_area(x_dest,y_dest);	reached_flag=0;	printf("is_find_fly_way called!\n");	memset(sour_fly_point,0,sizeof(sour_fly_point));	sour_fly_num=0;	memset(dest_fly_point,0,sizeof(dest_fly_point));	dest_fly_num=0;	if(area_sour!=area_dest){	//printf("is_find_fly_way called area_sour=%d,area_dest=%d!\n",area_sour,area_dest);		switch(area_sour){		case MAP_AREA_UP:			if(is_area_fly_reachable(area_sour,x_sour,y_sour,6,5)){				if(map_run[6][5]==0 || (x_sour==6 && y_sour==5)){					sour_fly_point[sour_fly_num]=2;					sour_fly_num++;				}			}			if(is_area_fly_reachable(area_sour,x_sour,y_sour,8,5)){				if(map_run[8][5]==0 || (x_sour==8 && y_sour==5)){					sour_fly_point[sour_fly_num]=3;					sour_fly_num++;				}			}			if(is_area_fly_reachable(area_sour,x_sour,y_sour,10,5)){				if(map_run[10][5]==0 || (x_sour==10 && y_sour==5)){					sour_fly_point[sour_fly_num]=4;					sour_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++;				}			}			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++;				}			}			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++;				}			}			break;		case MAP_AREA_CENTER:			sour_fly_point[0]=map_index_to_fly_point(x_sour,y_sour);			sour_fly_num=1;			break;		default:			break;		}		switch(area_dest){		case MAP_AREA_UP:			if(is_area_fly_reachable(area_dest,x_dest,y_dest,6,5)){				if(map_run[6][5]==0 || (x_dest==6 && y_dest==5)){					dest_fly_point[dest_fly_num]=2;					dest_fly_num++;				}			}			if(is_area_fly_reachable(area_dest,x_dest,y_dest,8,5)){				if(map_run[8][5]==0 || (x_dest==8 && y_dest==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_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_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_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;		case MAP_AREA_CENTER:			dest_fly_point[0]=map_index_to_fly_point(x_dest,y_dest);			dest_fly_num=1;			break;		default:			break;		}	}	else if(area_sour!=MAP_AREA_CENTER){		//same area!		if(is_area_fly_reachable(area_sour,x_sour,y_sour,x_dest,y_dest)){			reached_flag=1;		}		else{			switch(area_sour){			case MAP_AREA_UP:				if(is_area_fly_reachable(area_sour,x_sour,y_sour,6,5)){					if(map_run[6][5]==0 || (x_sour==6 && y_sour==5)){						sour_fly_point[sour_fly_num]=2;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,8,5)){					if(map_run[8][5]==0 || (x_sour==8 && y_sour==5)){						sour_fly_point[sour_fly_num]=3;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_sour,x_sour,y_sour,10,5)){					if(map_run[10][5]==0 || (x_sour==10 && y_sour==5)){						sour_fly_point[sour_fly_num]=4;						sour_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,6,5)){					if(map_run[6][5]==0 || (x_dest==6 && y_dest==5)){						dest_fly_point[dest_fly_num]=2;						dest_fly_num++;					}				}				if(is_area_fly_reachable(area_dest,x_dest,y_dest,8,5)){					if(map_run[8][5]==0 || (x_dest==8 && y_dest==5)){

⌨️ 快捷键说明

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