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

📄 hrd.c

📁 华容道gtk版 将压缩包在任一目录下解开
💻 C
📖 第 1 页 / 共 2 页
字号:
  #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 + -