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

📄 main.c

📁 连连看
💻 C
📖 第 1 页 / 共 5 页
字号:
    if(ui_pixbuf.randomback)gdk_pixbuf_unref(ui_pixbuf.randomback); /* Free old randomback pixbuf */    ui_pixbuf.randomback = gdk_pixbuf_new_from_file(bgfilename,NULL);    remove(bgfilename);    if(ui_pixbuf.randomback == NULL){ui_pixbuf.randomback = ui_pixbuf.mainback;g_print(_("randomback=NULL,Error occored.\n"));}  }  else{    ui_pixbuf.randomback = NULL;    ui_pixbuf.randomback_choice = 0;  }  remove("/tmp/llk_cardimages.png");  remove("/tmp/llk_cardbacks.png");  remove("/tmp/llk_vertical.png");  remove("/tmp/llk_horizon.png");  remove("/tmp/llk_logo.png");  remove("/tmp/llk_pause.jpg");  remove("/tmp/llk_mainback.jpg");  if(  !ui_pixbuf.cardimages || !ui_pixbuf.cardbacks || !ui_pixbuf.vertical || !ui_pixbuf.horizon || !ui_pixbuf.logo    || !ui_pixbuf.pause || !ui_pixbuf.mainback )  {    sprintf(*message,_("Convert jpg/png files into ui_pixbuf error."));    return FALSE;  }  return TRUE;}void ui_use_m_s_bg( GtkWidget *w,gpointer   data ){  switch(GPOINTER_TO_INT(data))  {    case 0:      ini_file_write_boolean(ui_ini,"UISETTING","bgmusic",gtk_check_menu_item_get_active(ui_menu_item.background_music));      break;    case 1:      ini_file_write_boolean(ui_ini,"UISETTING","sound",gtk_check_menu_item_get_active(ui_menu_item.sound_effect));      break;    case 2:      ini_file_write_boolean(ui_ini,"UISETTING","bgpicture",gtk_check_menu_item_get_active(ui_menu_item.background_picture));      /* redraw all images */      if(algorithm_game.status == ALGORITHM_GAME_RUN)ui_redraw_images();      break;  }      if(!ini_file_write_file(ui_ini,ui_ini->filename))  {    /* g_print("Ini file save error!\n"); */  }}/*  empty call back funtion, use for testing*/voidradio_item_on_clicked( GtkWidget *w, gpointer   data ){  gchar themenum[10];  gchar *return_str;  gchar path[MAX_PATH_LENGTH];  gboolean success=TRUE;  static gboolean called_from_menu = TRUE;  if(!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))return;  if(called_from_menu == FALSE)return;  sprintf(themenum,"theme%d",GPOINTER_TO_INT(data));    /* load pak file */  if( ! ini_file_read_string(ui_ini,"THEMEFILE",themenum, &return_str))  {    g_print(_("Failed to read \"[THEMEFILE]/%s\"\n"),themenum);    success = FALSE;  }  else  {    sprintf(path,"%s/%s/%s.pak",PACKAGE_DATA_DIR,PACKAGE,return_str);    g_free(return_str);    if( ! g_file_test(path,G_FILE_TEST_EXISTS))    {      g_print(_("The package file:LLK_DATA_PATH/%s does not exists.\n"),themenum);      success = FALSE;    }    else    {      if( ! LoadPAKHFT(path))      {        g_print(_("LoadPAKHFT error.\n"));        success = FALSE;      }      else      {        pak_info.back_num = GetFileNum("back","jpg");        pak_info.sound_num = GetFileNum("sound","wav");        pak_info.music_num = GetFileNum("music","mid");        if( !ExtractSingleFile("cardimages.png") ||  !ExtractSingleFile("cardbacks.png") ||  !ExtractSingleFile("horizon.png")            ||  !ExtractSingleFile("vertical.png") ||  !ExtractSingleFile("pause.jpg") ||  !ExtractSingleFile("logo.png")             ||  !ExtractSingleFile("mainback.jpg") )        {          g_print(_("Failed to extract necessary jpg/png files.\n"));          success = FALSE;        }        else        {          gdk_pixbuf_unref(ui_pixbuf.cardimages);          gdk_pixbuf_unref(ui_pixbuf.cardbacks);          gdk_pixbuf_unref(ui_pixbuf.vertical);          gdk_pixbuf_unref(ui_pixbuf.horizon);          gdk_pixbuf_unref(ui_pixbuf.logo);          gdk_pixbuf_unref(ui_pixbuf.pause);          gdk_pixbuf_unref(ui_pixbuf.mainback);          ui_pixbuf.cardimages = gdk_pixbuf_new_from_file("/tmp/llk_cardimages.png",NULL);          ui_pixbuf.cardbacks  = gdk_pixbuf_new_from_file("/tmp/llk_cardbacks.png",NULL);          ui_pixbuf.vertical   = gdk_pixbuf_new_from_file("/tmp/llk_vertical.png",NULL);          ui_pixbuf.horizon    = gdk_pixbuf_new_from_file("/tmp/llk_horizon.png",NULL);          ui_pixbuf.logo       = gdk_pixbuf_new_from_file("/tmp/llk_logo.png",NULL);          ui_pixbuf.pause      = gdk_pixbuf_new_from_file("/tmp/llk_pause.jpg",NULL);          ui_pixbuf.mainback   = gdk_pixbuf_new_from_file("/tmp/llk_mainback.jpg",NULL);          /* ui_pixbuf.cardback_choice = g_rand_int_range(ui_rand,0,6);*//*Do not change card back choice when change theme*/          if(pak_info.back_num > 0){              ui_pixbuf.randomback_choice = g_rand_int_range(ui_rand,1,pak_info.back_num+1);              /* Extract the bg picture and read it to ui_pixbuf.randomback */              gchar bgfilename[30];              sprintf(bgfilename,"back%d.jpg",ui_pixbuf.randomback_choice-1);              if(!ExtractSingleFile(bgfilename)){g_print(_("Failed to extract file:%s.\n"),bgfilename);}              sprintf(bgfilename,"/tmp/llk_back%d.jpg",ui_pixbuf.randomback_choice-1);              if(ui_pixbuf.randomback)gdk_pixbuf_unref(ui_pixbuf.randomback); /* Free old randomback pixbuf */              ui_pixbuf.randomback = gdk_pixbuf_new_from_file(bgfilename,NULL);              remove(bgfilename);              if(ui_pixbuf.randomback == NULL){ui_pixbuf.randomback = ui_pixbuf.mainback;g_print(_("randomback=NULL,Error occored.\n"));}          }          else{            ui_pixbuf.randomback = NULL;            ui_pixbuf.randomback_choice = 0;           }          remove("/tmp/llk_cardimages.png");          remove("/tmp/llk_cardbacks.png");          remove("/tmp/llk_vertical.png");          remove("/tmp/llk_horizon.png");          remove("/tmp/llk_logo.png");          remove("/tmp/llk_pause.jpg");          remove("/tmp/llk_mainback.jpg");          if(  !ui_pixbuf.cardimages || !ui_pixbuf.cardbacks || !ui_pixbuf.vertical || !ui_pixbuf.horizon || !ui_pixbuf.logo            || !ui_pixbuf.pause || !ui_pixbuf.mainback )          {            g_print(_("Convert jpg/png files into ui_pixbuf error.\n"));            success = FALSE;          }        }      }    }  }  if(success)  {    ini_file_write_string(ui_ini,"UISETTING","themenum",themenum);    if(!ini_file_write_file(ui_ini,ui_ini->filename)){/* g_print("Ini file save error!\n"); */}    ui_menu_item.current_theme = GTK_RADIO_MENU_ITEM(w);    /* redraw all images */    if(algorithm_game.status == ALGORITHM_GAME_RUN)ui_redraw_images();  }  else  {    /* ignore the error of convert png file,when other errors occored,because we have not change anything,       so just reset the radio menu item's active status */    called_from_menu = FALSE;    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_menu_item.current_theme),TRUE);    called_from_menu = TRUE;  }}gboolean ui_save_game_data(void){  FILE *fp;  struct passwd *user;  char path[MAX_PATH_LENGTH];  /* load ini file,if it do not exist, make a new one */  user = getpwuid(getuid());  /*user home directory: user->pw_dir*/  sprintf(path,"%s/.llk_linux/save.dat",user->pw_dir);  fp = fopen(path,"wb");  if(fp)  {    fwrite(&algorithm_game,sizeof(struct AlgorithmGame),1,fp);    fwrite(&time_remain,sizeof(gint),1,fp);    fclose(fp);    return TRUE;  }  else  {    g_print(_("Open save.dat file error.\n"));    return FALSE;  }}gboolean ui_read_game_data(void){  FILE *fp;  struct passwd *user;  char path[MAX_PATH_LENGTH];  /* load ini file,if it do not exist, make a new one */  user = getpwuid(getuid());  /*user home directory: user->pw_dir*/  sprintf(path,"%s/.llk_linux/save.dat",user->pw_dir);  fp = fopen(path,"rb");  if(fp)  {    fread(&algorithm_game,sizeof(struct AlgorithmGame),1,fp);    fread(&time_remain,sizeof(gint),1,fp);    fclose(fp);    return TRUE;  }  else  {    g_print(_("Open save.dat file error.\n"));    return FALSE;  }}void ui_input_string(gchar *str1,gchar *str2,gint max_length){  GtkWidget *dialog;  GtkWidget *label,*entry_name,*entry_nick;  GtkWidget *hbox,*button;  gint result;  g_assert(max_length > 0);  dialog = gtk_dialog_new();  gtk_window_set_title(GTK_WINDOW(dialog),_("Input your name and nick"));  gtk_container_border_width(GTK_CONTAINER(dialog), 5);      hbox = gtk_hbox_new(FALSE,10);        gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox),hbox,FALSE,TRUE,5);        label = gtk_label_new(_(" Name "));        gtk_widget_set_size_request(label,100,30);        gtk_box_pack_start (GTK_BOX(hbox),label,FALSE,TRUE,5);        gtk_widget_show(label);        entry_name = gtk_entry_new_with_max_length(max_length);        gtk_box_pack_start (GTK_BOX(hbox),entry_name,FALSE,TRUE,5);        gtk_widget_show(entry_name);      gtk_widget_show(hbox);      hbox = gtk_hbox_new(FALSE,10);        gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox),hbox,FALSE,TRUE,5);        label = gtk_label_new(_(" Nick "));        gtk_widget_set_size_request(label,100,30);        gtk_box_pack_start (GTK_BOX(hbox),label,FALSE,TRUE,5);        gtk_widget_show(label);        entry_nick = gtk_entry_new_with_max_length(max_length);        gtk_box_pack_start (GTK_BOX(hbox),entry_nick,FALSE,TRUE,5);        gtk_widget_show(entry_nick);      gtk_widget_show(hbox);  /*Button area*/  button = gtk_dialog_add_button(GTK_DIALOG(dialog),_("OK"),GTK_RESPONSE_ACCEPT);  gtk_widget_show(button);  button = gtk_dialog_add_button(GTK_DIALOG(dialog),_("Cancel"),GTK_RESPONSE_CANCEL);  gtk_widget_show(button);  result = gtk_dialog_run (GTK_DIALOG (dialog));  switch (result)  {      case GTK_RESPONSE_ACCEPT:         sprintf(str1,"%s",gtk_entry_get_text(GTK_ENTRY(entry_name)));         sprintf(str2,"%s",gtk_entry_get_text(GTK_ENTRY(entry_nick)));         break;      default:         sprintf(str1,"%s","");         sprintf(str2,"%s","");         break;  }  gtk_widget_destroy (dialog);}void ui_record_score(gboolean view){  struct ScoreItem{    gchar score[30];    gchar name[51];    gchar nick[51];    gchar difficulty[10];    gchar level[3];    gchar time[30];    struct ScoreItem *prev;    struct ScoreItem *next;  };  FILE *fp;  struct passwd *user;  gchar path[MAX_PATH_LENGTH];  struct ScoreItem *score_list=NULL,*score_item_end=NULL,*score_item_tmp;  gint item_num=0;  /* load ini file,if it do not exist, make a new one */  user = getpwuid(getuid());  /*user home directory: user->pw_dir*/  sprintf(path,"%s/.llk_linux/score.dat",user->pw_dir);  fp = fopen(path,"rb");  if(fp != NULL)  {    while(1)    {      score_item_tmp = (struct ScoreItem *)malloc(sizeof(struct ScoreItem));      fread(score_item_tmp,sizeof(struct ScoreItem),1,fp);      score_item_tmp->next = NULL;      score_item_tmp->prev = NULL;      if(feof(fp)) {g_free(score_item_tmp);break;}      if(score_item_end)      {        score_item_end->next = score_item_tmp;        score_item_tmp->prev = score_item_end;        score_item_end = score_item_tmp;      }      else      {        score_list = score_item_tmp;        score_item_end = score_list;      }      item_num++;    }    fclose(fp);  }  else  {    g_print(_("Open file error.\n"));  }  if(!view) /* If not just view the score,then this function must be called by ui_game_over,so add the current player's score               into the list,and then write to file if the list is modified,and at last,show the score list on a new window */  {    gint insert_pos=1;    for(score_item_tmp = score_list;score_item_tmp!=NULL;score_item_tmp=score_item_tmp->next)    {      if(algorithm_game.score > atoi(score_item_tmp->score))break;      insert_pos++;     }    if(insert_pos > 10)    {insert_pos=0;score_item_tmp=NULL;}    else    {      if(insert_pos == 1)      {        if(score_list == NULL)        {          score_list = (struct ScoreItem *)g_malloc(sizeof(struct ScoreItem));          score_list->prev = NULL;          score_list->next = NULL;          score_item_end = score_list;          score_item_tmp = score_list;        }        e

⌨️ 快捷键说明

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