📄 hrd.c
字号:
#endif}/* ---------------------------- */gboolean move_able(gint man,gint direct){ gint x,y,next_x,next_y; gint shape; x=man_x[man]; y=man_y[man]; shape=man_shape[man]; switch(direct){ case LEFT: if(x==1)return FALSE; next_x=x-1;next_y=y; if(board[next_y-1][next_x-1]!=BLANK)return FALSE; if(shape==PLUMP || shape==ERECT)next_y++; if(board[next_y-1][next_x-1]!=BLANK)return FALSE; break; case RIGHT: if(x==4)return FALSE; next_x=x+1;next_y=y; if(shape==PLUMP || shape==LIE){ next_x++;if(next_x>4)return FALSE; } if(board[next_y-1][next_x-1]!=BLANK)return FALSE; if(shape==PLUMP || shape==ERECT){ next_y++;if(next_y>5)return FALSE; } if(board[next_y-1][next_x-1]!=BLANK)return FALSE; break; case UP: if(y==1)return FALSE; next_x=x;next_y=y-1; if(board[next_y-1][next_x-1]!=BLANK)return FALSE; if(shape==PLUMP || shape==LIE)next_x++; if(board[next_y-1][next_x-1]!=BLANK)return FALSE; break; case DOWN: if(y==5)return FALSE; next_x=x;next_y=y+1; if(shape==PLUMP || shape==ERECT){ next_y++;if(next_y>5)return FALSE; } if(board[next_y-1][next_x-1]!=BLANK)return FALSE; if(shape==PLUMP || shape==LIE)next_x++; if(board[next_y-1][next_x-1]!=BLANK)return FALSE; break; } return TRUE;}/* ---------------------------- */void move(gint man,gint direct){ gint x,y,old_x,old_y; gint shape; x=man_x[man];old_x=x; y=man_y[man];old_y=y; shape=man_shape[man]; //modify board flags switch (direct){ case LEFT: x--; switch (shape){ case PLUMP: board[y-1][x-1]=man;board[y-1+1][x-1]=man; board[old_y-1][old_x-1+1]=BLANK;board[old_y-1+1][old_x-1+1]=BLANK; break; case ERECT: board[y-1][x-1]=man;board[y-1+1][x-1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1+1][old_x-1]=BLANK; break; case LIE: board[y-1][x-1]=man; board[old_y-1][old_x-1+1]=BLANK; break; case SMALL: board[y-1][x-1]=man; board[old_y-1][old_x-1]=BLANK; break; } break; case RIGHT: x++; switch (shape){ case PLUMP: board[y-1][x-1+1]=man;board[y-1+1][x-1+1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1+1][old_x-1]=BLANK; break; case ERECT: board[y-1][x-1]=man;board[y-1+1][x-1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1+1][old_x-1]=BLANK; break; case LIE: board[y-1][x-1+1]=man; board[old_y-1][old_x-1]=BLANK; break; case SMALL: board[y-1][x-1]=man; board[old_y-1][old_x-1]=BLANK; break; } break; case UP: y--; switch (shape){ case PLUMP: board[y-1][x-1]=man;board[y-1][x-1+1]=man; board[old_y-1+1][old_x-1]=BLANK;board[old_y-1+1][old_x-1+1]=BLANK; break; case ERECT: board[y-1][x-1]=man; board[old_y-1+1][old_x-1]=BLANK; break; case LIE: board[y-1][x-1]=man;board[y-1][x-1+1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1][old_x-1+1]=BLANK; break; case SMALL: board[y-1][x-1]=man; board[old_y-1][old_x-1]=BLANK; break; } break; case DOWN: y++; switch (shape){ case PLUMP: board[y-1+1][x-1]=man;board[y-1+1][x-1+1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1][old_x-1+1]=BLANK; break; case ERECT: board[y-1+1][x-1]=man; board[old_y-1][old_x-1]=BLANK; break; case LIE: board[y-1][x-1]=man;board[y-1][x-1+1]=man; board[old_y-1][old_x-1]=BLANK;board[old_y-1][old_x-1+1]=BLANK; break; case SMALL: board[y-1][x-1]=man; board[old_y-1][old_x-1]=BLANK; break; } break; } man_x[man]=x; man_y[man]=y; gtk_fixed_move(GTK_FIXED(fixed),chess[man], Base_X+(x-1)*80,Base_Y+(y-1)*80);}/* ---------------------------- */void about_auth(){ GtkWidget *about_w; GtkWidget *fixed; about_w=gtk_window_new(GTK_WINDOW_POPUP); gtk_widget_set_events(about_w,GDK_SCROLL_MASK); gtk_window_set_decorated(GTK_WINDOW(about_w),FALSE); gtk_widget_set_app_paintable(about_w,TRUE); gtk_window_set_resizable(GTK_WINDOW(about_w),FALSE); gtk_window_set_position(GTK_WINDOW(about_w),GTK_WIN_POS_CENTER_ALWAYS); gtk_widget_realize(about_w); g_signal_connect(G_OBJECT(about_w),"button_press_event", G_CALLBACK(close_about_window),&about_w); fixed=gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(about_w),fixed); gtk_widget_set_usize(fixed,300,200); set_widget_bg("./skins/default/about_auth.png",fixed); gtk_widget_show(fixed); gtk_widget_show_all(about_w);}/* ---------------------------- */void about_hrd(){ GtkWidget *about_w; GtkWidget *fixed; about_w=gtk_window_new(GTK_WINDOW_POPUP); gtk_widget_set_events(about_w,GDK_SCROLL_MASK); gtk_window_set_decorated(GTK_WINDOW(about_w),FALSE); gtk_widget_set_app_paintable(about_w,TRUE); gtk_window_set_resizable(GTK_WINDOW(about_w),FALSE); gtk_window_set_position(GTK_WINDOW(about_w),GTK_WIN_POS_CENTER_ALWAYS); gtk_widget_realize(about_w); g_signal_connect(G_OBJECT(about_w),"button_press_event", G_CALLBACK(close_about_window),&about_w); fixed=gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(about_w),fixed); gtk_widget_set_usize(fixed,464,360); set_widget_bg("./skins/default/about_hrd.png",fixed); gtk_widget_show(fixed); gtk_widget_show_all(about_w);}/* ---------------------------- */void close_about_window(GtkWidget *window,GdkEventButton *event){ if(event->button==1 && event->type==GDK_BUTTON_PRESS){ gtk_widget_destroy(window); }}/* ---------------------------- */void load_game_data(gint stage){ int i,j; //Common data man=0; steps=0; for(i=0;i<10;i++)man_dir[i]=0; switch (stage){ case 1: {{ gint flags[5][4]={ { 1, 0, 0, 2 }, { 1, 0, 0, 2 }, { 4, 3, 3, 5 }, { 4, 6, 7, 5 }, { 8,-1,-1, 9 } }; gint x[10]={ 2,1,4,2,1,4,2,3,1,4 }; gint y[10]={ 1,1,1,3,3,3,4,4,5,5 }; gint shape[10]={ 0,1,1,2,1,1,3,3,3,3 }; for(i=0;i<10;i++){ man_x[i]=x[i]; man_y[i]=y[i]; man_shape[i]=shape[i]; } for(i=0;i<5;i++)for(j=0;j<4;j++)board[i][j]=flags[i][j]; }} break; case 2: break; case 3: break; }}/* ---------------------------- */void new_game(){ int i; load_game_data(stage); for(i=0;i<10;i++){ gtk_fixed_move(GTK_FIXED(fixed),chess[i], Base_X+(man_x[i]-1)*80,Base_Y+(man_y[i]-1)*80); }}/* ---------------------------- */void game_demo(){ #ifdef _DEBUG_ g_print("Stage %d : demo mode\n",stage); #endif switch (stage) { case 1: {{ gint i; gint total_steps=50; int data[]={ 6,3,9,0,5,3,3,1,4,1,8,2,6,0,4,3,3,0,3,0, 7,2,7,1,9,2,9,2,4,1,8,1,8,3,3,3,9,0,9,0, 7,0,7,0,4,2,5,2,8,1,8,1,6,1,6,1,3,3,7,3, 7,0,4,0,5,0,2,3,2,3,0,1,1,1,9,2,9,2,7,2, 7,2,4,0,1,3,1,3,0,0,2,2,2,2,5,1,6,2,6,2, 8,0,8,2,3,1,3,1,1,3,4,3,6,0,6,0,0,3,9,1, 9,1,7,2,7,1,6,2,6,2,4,2,4,2,1,0,8,0,8,3, 0,3,9,3,9,0,2,0,5,2,5,2,0,1,9,3,9,3,7,3, 6,1,4,2,1,2,8,0,9,3,0,0,5,3,5,3,2,1,6,1, 7,1,4,1,1,2,1,2,0,0,7,3,7,3,6,3,6,3,2,0, 5,2,5,2,7,1,7,2,3,2,9,1,9,1,8,1,8,1,0,3, 6,0,6,0,7,0,7,0,3,2,8,2,8,1,0,1 }; g_print("OK\n"); sleep(2); for(i=0;i<118;i++){ #ifdef _DEBUG_ g_print("move %2d to %2d\n",data[2*i],data[2*i+1]); #endif move(data[2*i],data[2*i+1]); while(gtk_events_pending())gtk_main_iteration(); //Delay 0.5 second usleep(500000); } }} break; case 2: break; }}/* ---------------------------- */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -