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