📄 qiju.cpp
字号:
//###################################################//#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 + -