00001
00008 #include <string.h>
00009 #include <gtk/gtk.h>
00010 #include <stdlib.h>
00011 #include <unistd.h>
00012 #include <stdio.h>
00013 #include <sqlite3.h>
00014
00015 #define BUFFER 4096
00016 #define MAX_IMAGES 8
00017
00018 sqlite3 *db1;
00019
00020 GtkWidget *window;
00021 GtkWidget *vbox;
00022 GtkWidget *entry;
00023 GtkWidget *table;
00024
00025 GtkWidget *playername;
00026
00027 GtkWidget *button[25];
00028
00029 GtkWidget *button1;
00030 GtkWidget *button2;
00031 GtkWidget *button3;
00032
00033 GtkWidget *image;
00034 GtkWidget *image0;
00035 GtkWidget *image1;
00036 GtkWidget *image2;
00037 GtkWidget *image3;
00038 GtkWidget *image4;
00039 GtkWidget *image5;
00040 GtkWidget *image6;
00041
00042 GtkWidget *label;
00043 GtkWidget *label1;
00044 GtkWidget *label2;
00045 GtkWidget *label3;
00046 GtkWidget *label4;
00047
00048 GtkWidget *dialog;
00049 GtkWidget *dialog2;
00050 GtkWidget *dialog3;
00051 GtkWidget *dialog4;
00052
00053 char randomname[10];
00054 char randomcategory[2];
00055 char showstring[10];
00056 int wrongcount = 0;
00057 const gchar *entry_text, str[30],*playername_text;
00058
00059
00063 static int callback (void *NotUsed, int argc, char **argv, char **azColName)
00064 {
00065 NotUsed = 0;
00066 int i;
00067 for (i = 0; i < argc; i++)
00068 {
00069 printf ("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
00070 strcpy(randomname,argv[i]);
00071 }
00072 printf ("\n");
00073 return 0;
00074 }
00075
00076
00080 void setup_tables()
00081 {
00082 int rc1;
00083 char *zErrMsg = 0;
00084 char sql_query[BUFFER];
00085
00086 rc1 = sqlite3_open ("hangman.sqlite", &db1);
00087 if (rc1)
00088 {
00089 fprintf (stderr, "Can't open database: %s\n", sqlite3_errmsg (db1));
00090 sqlite3_close (db1);
00091 exit (1);
00092 }
00093 strcpy(sql_query, "create table allcategories (category,name)");
00094 rc1 = sqlite3_exec (db1, sql_query, callback, 0, &zErrMsg);
00095 }
00096
00097
00101 void get_random_element(char *category)
00102 {
00103 char sql_query[BUFFER];
00104 char *zErrMsg = 0;
00105 int rc;
00106
00107 sprintf(sql_query,"select name from allcategories where category = '%s' ORDER BY RANDOM() LIMIT 1",category);
00108 rc = sqlite3_exec (db1, sql_query, callback, 0, &zErrMsg);
00109 if (rc != SQLITE_OK)
00110 {
00111 fprintf (stderr, "SQL error: %s\n", zErrMsg);
00112 if (zErrMsg)
00113 sqlite3_free (zErrMsg);
00114 }
00115 }
00116
00117
00118 void enter_callback(GtkWidget *widget, GtkWidget *entry)
00119 {
00120 entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
00121 strcpy((char *)str,(char *)entry_text);
00122 printf("entry_text: %s\n", entry_text);
00123 }
00124
00125
00126 void playername_callback(GtkWidget *widget, GtkWidget *entry)
00127 {
00128 playername_text = gtk_entry_get_text(GTK_ENTRY(entry));
00129
00130 printf("playername_text: %s\n", playername_text);
00131 }
00132
00133
00137 int update_entryText(char ch)
00138 {
00139 int i;
00140 int flag = 0;
00141 for(i = 0; i < strlen(randomname); i++)
00142 {
00143 if(randomname[i] == ch)
00144 {
00145 showstring[i] = ch;
00146 flag = 1;
00147 }
00148 }
00149 return flag;
00150 }
00151
00152
00156 void set_images(int wrongcount)
00157 {
00158 if(wrongcount == 0)
00159 {
00160 gtk_widget_hide (image1);
00161 gtk_widget_hide (image2);
00162 gtk_widget_hide (image3);
00163 gtk_widget_hide (image4);
00164 gtk_widget_hide (image5);
00165 gtk_widget_hide (image6);
00166
00167 gtk_widget_show (image0);
00168 }
00169 if(wrongcount == 1)
00170 {
00171 gtk_widget_hide (image0);
00172 gtk_widget_hide (image2);
00173 gtk_widget_hide (image3);
00174 gtk_widget_hide (image4);
00175 gtk_widget_hide (image5);
00176 gtk_widget_hide (image6);
00177
00178 gtk_widget_show (image1);
00179 }
00180 if(wrongcount == 2)
00181 {
00182 gtk_widget_hide (image1);
00183 gtk_widget_hide (image0);
00184 gtk_widget_hide (image3);
00185 gtk_widget_hide (image4);
00186 gtk_widget_hide (image5);
00187 gtk_widget_hide (image6);
00188
00189 gtk_widget_show (image2);
00190 }
00191 if(wrongcount == 3)
00192 {
00193 gtk_widget_hide (image1);
00194 gtk_widget_hide (image2);
00195 gtk_widget_hide (image0);
00196 gtk_widget_hide (image4);
00197 gtk_widget_hide (image5);
00198 gtk_widget_hide (image6);
00199
00200 gtk_widget_show (image3);
00201 }
00202 if(wrongcount == 4)
00203 {
00204 gtk_widget_hide (image1);
00205 gtk_widget_hide (image2);
00206 gtk_widget_hide (image3);
00207 gtk_widget_hide (image0);
00208 gtk_widget_hide (image5);
00209 gtk_widget_hide (image6);
00210
00211 gtk_widget_show (image4);
00212 }
00213 if(wrongcount == 5)
00214 {
00215 gtk_widget_hide (image1);
00216 gtk_widget_hide (image2);
00217 gtk_widget_hide (image3);
00218 gtk_widget_hide (image4);
00219 gtk_widget_hide (image0);
00220 gtk_widget_hide (image6);
00221
00222 gtk_widget_show (image5);
00223 }
00224 if(wrongcount == 6)
00225 {
00226 gtk_widget_hide (image1);
00227 gtk_widget_hide (image2);
00228 gtk_widget_hide (image3);
00229 gtk_widget_hide (image4);
00230 gtk_widget_hide (image5);
00231 gtk_widget_hide (image0);
00232
00233 gtk_widget_show (image6);
00234 }
00235 }
00236
00237
00241 void update_score(int score)
00242 {
00243 FILE *sample_file;
00244 char name[100];
00245 char filetext[BUFFER];
00246 char temp[100];
00247 int prevscore;
00248
00249 sample_file = fopen("scorefile.txt", "r");
00250 printf("HERE \n");
00251 if(sample_file == NULL)
00252 {
00253 fprintf(stderr, "Cant open file for writing\n");
00254 perror("");
00255 exit(EXIT_FAILURE);
00256 }
00257
00258 int flag = 0;
00259 while(fscanf(sample_file, "%s %d\n",name,&prevscore) > 0)
00260 {
00261 printf("%s --> %d\n", name, prevscore);
00262 if(strcmp(name,gtk_entry_get_text(GTK_ENTRY(playername))) == 0)
00263 {
00264
00265
00266
00267
00268
00269 printf("match found and score is updated either 100(won) and 0(lose)\n");
00270 sprintf(temp,"%s %d\n",name,score);
00271 strcat(filetext,temp);
00272 flag = 1;
00273 continue;
00274 }
00275 sprintf(temp,"%s %d\n", name, prevscore);
00276 strcat(filetext, temp);
00277 }
00278
00279 if(flag == 0)
00280 {
00281 printf("match not found\n");
00282 sprintf(temp,"%s %d\n",gtk_entry_get_text(GTK_ENTRY(playername)), score);
00283 strcat(filetext, temp);
00284 }
00285
00286 sample_file = fopen("scorefile.txt", "w");
00287 fprintf(sample_file,"%s",filetext);
00288 fclose(sample_file);
00289 gtk_label_set_text((GtkLabel *)label, filetext);
00290 }
00291
00292
00296 void win_or_loose(int res)
00297 {
00298 if(res == 0)
00299 {
00300 wrongcount++;
00301 set_images(wrongcount);
00302
00303 printf("WrongCount:%d \n",wrongcount);
00304 if(wrongcount == 6)
00305 {
00306 printf("GAME OVER\n");
00307
00308
00309 update_score(0);
00310
00311
00312 gtk_entry_set_editable(GTK_ENTRY(playername), 1);
00313
00314 wrongcount = 0;
00315 set_images(MAX_IMAGES);
00316
00317 dialog2 = gtk_message_dialog_new (NULL,GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "GAME OVER!!!");
00318 gtk_dialog_run (GTK_DIALOG (dialog2));
00319 gtk_widget_destroy (dialog2);
00320 gtk_entry_set_text(GTK_ENTRY (entry), "Select A Category...");
00321
00322
00323
00324 char filename[10];
00325 sprintf(filename,"hangman%d.png", wrongcount);
00326 image = gtk_image_new_from_file(filename);
00327 }
00328 }
00329 else
00330 {
00331 gtk_entry_set_text(GTK_ENTRY (entry), showstring);
00332 if(strcmp(showstring, randomname) == 0)
00333 {
00334 printf("YOU WON\n");
00335
00336 update_score(100);
00337
00338
00339 gtk_entry_set_editable(GTK_ENTRY(playername), 1);
00340
00341
00342 wrongcount = 0;
00343
00344 dialog3 = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "YOU WON!!!");
00345 gtk_dialog_run (GTK_DIALOG (dialog3));
00346 gtk_widget_destroy (dialog3);
00347 gtk_entry_set_text(GTK_ENTRY (entry), "Select A Category...");
00348
00349
00350
00351
00352
00353 set_images(0);
00354 }
00355 }
00356 }
00357
00358
00362 gint action_button_a(GtkWidget *widget, GdkEvent *event, gpointer value)
00363 {
00364 printf("A clicked\n");
00365 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00366 {
00367
00368 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00369 gtk_dialog_run (GTK_DIALOG (dialog));
00370 gtk_widget_destroy (dialog);
00371 return FALSE;
00372 }
00373 int res = update_entryText('a');
00374 win_or_loose(res);
00375 return FALSE;
00376 }
00377
00378
00382 gint action_button_b(GtkWidget *widget, GdkEvent *event, gpointer value)
00383 {
00384 printf("B clicked\n");
00385 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...")==0)
00386 {
00387
00388 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00389 gtk_dialog_run (GTK_DIALOG (dialog));
00390 gtk_widget_destroy (dialog);
00391 printf("Pop up a dialog box Select a category\n");
00392 return FALSE;
00393 }
00394 int res = update_entryText('b');
00395 win_or_loose(res);
00396 return FALSE;
00397 }
00398
00399
00403 gint action_button_c(GtkWidget *widget, GdkEvent *event, gpointer value)
00404 {
00405 printf("C clicked\n");
00406 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00407 {
00408
00409 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00410 gtk_dialog_run (GTK_DIALOG (dialog));
00411 gtk_widget_destroy (dialog);
00412 printf("Pop up a dialog box Select a category\n");
00413 return FALSE;
00414 }
00415 int res = update_entryText('c');
00416 win_or_loose(res);
00417 return FALSE;
00418 }
00419
00420
00424 gint action_button_d(GtkWidget *widget,GdkEvent *event, gpointer value)
00425 {
00426 printf("D clicked\n");
00427 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00428 {
00429
00430 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00431 gtk_dialog_run (GTK_DIALOG (dialog));
00432 gtk_widget_destroy (dialog);
00433 printf("Pop up a dialog box Select a category\n");
00434 return FALSE;
00435 }
00436 int res = update_entryText('d');
00437 win_or_loose(res);
00438 return FALSE;
00439 }
00440
00441
00445 gint action_button_e(GtkWidget *widget, GdkEvent *event, gpointer value)
00446 {
00447 printf("E clicked\n");
00448 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00449 {
00450
00451 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00452 gtk_dialog_run (GTK_DIALOG (dialog));
00453 gtk_widget_destroy (dialog);
00454 printf("Pop up a dialog box Select a category\n");
00455 return FALSE;
00456 }
00457 int res = update_entryText('e');
00458 win_or_loose(res);
00459 return FALSE;
00460 }
00461
00462
00466 gint action_button_f(GtkWidget *widget, GdkEvent *event, gpointer value)
00467 {
00468 printf("F clicked\n");
00469 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00470 {
00471
00472 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00473 gtk_dialog_run (GTK_DIALOG (dialog));
00474 gtk_widget_destroy (dialog);
00475 printf("Pop up a dialog box Select a category\n");
00476 return FALSE;
00477 }
00478 int res = update_entryText('f');
00479 win_or_loose(res);
00480 return FALSE;
00481 }
00482
00483
00487 gint action_button_g(GtkWidget *widget,GdkEvent *event, gpointer value)
00488 {
00489 printf("G clicked\n");
00490 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00491 {
00492
00493 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00494 gtk_dialog_run (GTK_DIALOG (dialog));
00495 gtk_widget_destroy (dialog);
00496 printf("Pop up a dialog box Select a category\n");
00497 return FALSE;
00498 }
00499 int res = update_entryText('g');
00500 win_or_loose(res);
00501 return FALSE;
00502 }
00503
00504
00508 gint action_button_h(GtkWidget *widget, GdkEvent *event, gpointer value)
00509 {
00510 printf("H clicked\n");
00511 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00512 {
00513
00514 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00515 gtk_dialog_run (GTK_DIALOG (dialog));
00516 gtk_widget_destroy (dialog);
00517 printf("Pop up a dialog box Select a category\n");
00518 return FALSE;
00519 }
00520 int res = update_entryText('h');
00521 win_or_loose(res);
00522 return FALSE;
00523 }
00524
00525
00529 gint action_button_i(GtkWidget *widget, GdkEvent *event, gpointer value)
00530 {
00531 printf("I clicked\n");
00532 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00533 {
00534
00535 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00536 gtk_dialog_run (GTK_DIALOG (dialog));
00537 gtk_widget_destroy (dialog);
00538 printf("Pop up a dialog box Select a category\n");
00539 return FALSE;
00540 }
00541 int res = update_entryText('i');
00542 win_or_loose(res);
00543 return FALSE;
00544 }
00545
00546
00550 gint action_button_j(GtkWidget *widget, GdkEvent *event, gpointer value)
00551 {
00552 printf("J clicked\n");
00553 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00554 {
00555
00556 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00557 gtk_dialog_run (GTK_DIALOG (dialog));
00558 gtk_widget_destroy (dialog);
00559 printf("Pop up a dialog box Select a category\n");
00560 return FALSE;
00561 }
00562 int res = update_entryText('j');
00563 win_or_loose(res);
00564 return FALSE;
00565 }
00566
00567
00571 gint action_button_k(GtkWidget *widget, GdkEvent *event, gpointer value)
00572 {
00573 printf("K clicked\n");
00574 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00575 {
00576
00577 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00578 gtk_dialog_run (GTK_DIALOG (dialog));
00579 gtk_widget_destroy (dialog);
00580 printf("Pop up a dialog box Select a category\n");
00581 return FALSE;
00582 }
00583 int res = update_entryText('k');
00584 win_or_loose(res);
00585 return FALSE;
00586 }
00587
00588
00592 gint action_button_l(GtkWidget *widget,GdkEvent *event,gpointer value)
00593 {
00594 printf("L clicked\n");
00595 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00596 {
00597
00598 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00599 gtk_dialog_run (GTK_DIALOG (dialog));
00600 gtk_widget_destroy (dialog);
00601 printf("Pop up a dialog box Select a category\n");
00602 return FALSE;
00603 }
00604 int res = update_entryText('l');
00605 win_or_loose(res);
00606 return FALSE;
00607 }
00608
00609
00613 gint action_button_m(GtkWidget *widget,GdkEvent *event, gpointer value)
00614 {
00615 printf("M clicked\n");
00616 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00617 {
00618
00619 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00620 gtk_dialog_run (GTK_DIALOG (dialog));
00621 gtk_widget_destroy (dialog);
00622 printf("Pop up a dialog box Select a category\n");
00623 return FALSE;
00624 }
00625 int res = update_entryText('m');
00626 win_or_loose(res);
00627 return FALSE;
00628 }
00629
00630
00634 gint action_button_n(GtkWidget *widget,GdkEvent *event,gpointer value)
00635 {
00636 printf("N clicked\n");
00637 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00638 {
00639
00640 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00641 gtk_dialog_run (GTK_DIALOG (dialog));
00642 gtk_widget_destroy (dialog);
00643 printf("Pop up a dialog box Select a category\n");
00644 return FALSE;
00645 }
00646 int res = update_entryText('n');
00647 win_or_loose(res);
00648 return FALSE;
00649 }
00650
00651
00655 gint action_button_o(GtkWidget *widget,GdkEvent *event, gpointer value)
00656 {
00657 printf("O clicked\n");
00658 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00659 {
00660
00661 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00662 gtk_dialog_run (GTK_DIALOG (dialog));
00663 gtk_widget_destroy (dialog);
00664 printf("Pop up a dialog box Select a category\n");
00665 return FALSE;
00666 }
00667 int res = update_entryText('o');
00668 win_or_loose(res);
00669 return FALSE;
00670 }
00671
00672
00676 gint action_button_p(GtkWidget *widget, GdkEvent *event, gpointer value)
00677 {
00678 printf("P clicked\n");
00679 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00680 {
00681
00682 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00683 gtk_dialog_run (GTK_DIALOG (dialog));
00684 gtk_widget_destroy (dialog);
00685 printf("Pop up a dialog box Select a category\n");
00686 return FALSE;
00687 }
00688 int res = update_entryText('p');
00689 win_or_loose(res);
00690 return FALSE;
00691 }
00692
00693
00697 gint action_button_q(GtkWidget *widget, GdkEvent *event, gpointer value)
00698 {
00699 printf("Q clicked\n");
00700 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00701 {
00702
00703 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00704 gtk_dialog_run (GTK_DIALOG (dialog));
00705 gtk_widget_destroy (dialog);
00706 printf("Pop up a dialog box Select a category\n");
00707 return FALSE;
00708 }
00709 int res = update_entryText('q');
00710 win_or_loose(res);
00711 return FALSE;
00712 }
00713
00714
00718 gint action_button_r(GtkWidget *widget, GdkEvent *event, gpointer value)
00719 {
00720 printf("R clicked\n");
00721 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00722 {
00723
00724 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00725 gtk_dialog_run (GTK_DIALOG (dialog));
00726 gtk_widget_destroy (dialog);
00727 printf("Pop up a dialog box Select a category\n");
00728 return FALSE;
00729 }
00730 int res = update_entryText('r');
00731 win_or_loose(res);
00732 return FALSE;
00733 }
00734
00735
00739 gint action_button_s(GtkWidget *widget, GdkEvent *event, gpointer value)
00740 {
00741 printf("S clicked\n");
00742 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00743 {
00744
00745 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00746 gtk_dialog_run (GTK_DIALOG (dialog));
00747 gtk_widget_destroy (dialog);
00748 printf("Pop up a dialog box Select a category\n");
00749 return FALSE;
00750 }
00751 int res = update_entryText('s');
00752 win_or_loose(res);
00753 return FALSE;
00754 }
00755
00756
00760 gint action_button_t(GtkWidget *widget, GdkEvent *event, gpointer value)
00761 {
00762 printf("T clicked\n");
00763 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00764 {
00765
00766 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00767 gtk_dialog_run (GTK_DIALOG (dialog));
00768 gtk_widget_destroy (dialog);
00769 printf("Pop up a dialog box Select a category\n");
00770 return FALSE;
00771 }
00772 int res = update_entryText('t');
00773 win_or_loose(res);
00774 return FALSE;
00775 }
00776
00777
00781 gint action_button_u(GtkWidget *widget, GdkEvent *event, gpointer value)
00782 {
00783 printf("U clicked\n");
00784 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00785 {
00786
00787 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00788 gtk_dialog_run (GTK_DIALOG (dialog));
00789 gtk_widget_destroy (dialog);
00790 printf("Pop up a dialog box Select a category\n");
00791 return FALSE;
00792 }
00793 int res = update_entryText('u');
00794 win_or_loose(res);
00795 return FALSE;
00796 }
00797
00801 gint action_button_v(GtkWidget *widget, GdkEvent *event, gpointer value)
00802 {
00803 printf("V clicked\n");
00804 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00805 {
00806
00807 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00808 gtk_dialog_run (GTK_DIALOG (dialog));
00809 gtk_widget_destroy (dialog);
00810 printf("Pop up a dialog box Select a category\n");
00811 return FALSE;
00812 }
00813 int res = update_entryText('v');
00814 win_or_loose(res);
00815 return FALSE;
00816 }
00817
00818
00822 gint action_button_w(GtkWidget *widget, GdkEvent *event, gpointer value)
00823 {
00824 printf("W clicked\n");
00825 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00826 {
00827
00828 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00829 gtk_dialog_run (GTK_DIALOG (dialog));
00830 gtk_widget_destroy (dialog);
00831 printf("Pop up a dialog box Select a category\n");
00832 return FALSE;
00833 }
00834 int res = update_entryText('w');
00835 win_or_loose(res);
00836 return FALSE;
00837 }
00838
00839
00843 gint action_button_x(GtkWidget *widget, GdkEvent *event, gpointer value)
00844 {
00845 printf("X clicked\n");
00846 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00847 {
00848
00849 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00850 gtk_dialog_run (GTK_DIALOG (dialog));
00851 gtk_widget_destroy (dialog);
00852 printf("Pop up a dialog box Select a category\n");
00853 return FALSE;
00854 }
00855 int res = update_entryText('x');
00856 win_or_loose(res);
00857 return FALSE;
00858 }
00859
00860
00864 gint action_button_y(GtkWidget *widget, GdkEvent *event, gpointer value)
00865 {
00866 printf("Y clicked\n");
00867 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00868 {
00869
00870 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00871 gtk_dialog_run (GTK_DIALOG (dialog));
00872 gtk_widget_destroy (dialog);
00873 printf("Pop up a dialog box Select a category\n");
00874 return FALSE;
00875 }
00876 int res = update_entryText('y');
00877 win_or_loose(res);
00878 return FALSE;
00879 }
00880
00881
00885 gint action_button_z(GtkWidget *widget, GdkEvent *event, gpointer value)
00886 {
00887 printf("Z clicked\n");
00888 if(strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"Select A Category...") == 0)
00889 {
00890
00891 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Select category to get started");
00892 gtk_dialog_run (GTK_DIALOG (dialog));
00893 gtk_widget_destroy (dialog);
00894 printf("Pop up a dialog box Select a category\n");
00895 return FALSE;
00896 }
00897 int res = update_entryText('z');
00898 win_or_loose(res);
00899 return FALSE;
00900 }
00901
00902 gint popup_box(char *message)
00903 {
00904
00905
00906 dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, message);
00907 gtk_dialog_run (GTK_DIALOG (dialog));
00908 gtk_widget_destroy (dialog);
00909 printf("Pop up a dialog box\n");
00910 return FALSE;
00911 }
00915 gint action_button_country(GtkWidget *widget, GdkEvent *event, gpointer value)
00916 {
00917 wrongcount = 0;
00918 set_images(wrongcount);
00919 char popstring[100];
00920 if(strcmp(gtk_entry_get_text(GTK_ENTRY(playername)),"") == 0)
00921 {
00922 strcpy(popstring,"Enter Name plzzz");
00923 popup_box(popstring);
00924 return FALSE;
00925 }
00926
00927
00928 gtk_entry_set_editable(GTK_ENTRY(playername), 0);
00929
00930
00931 strcpy(randomcategory,"c");
00932 printf("COUNTRY clicked\n");
00933
00934 get_random_element(randomcategory);
00935 int length = strlen(randomname);
00936
00937 int i;
00938 for(i = 0; i < length; i++)
00939 showstring[i] = '*';
00940 showstring[length] = '\0';
00941 gtk_entry_set_text(GTK_ENTRY (entry), showstring);
00942 return FALSE;
00943 }
00944
00945
00949 gint action_button_animal(GtkWidget *widget, GdkEvent *event, gpointer value)
00950 {
00951 wrongcount = 0;
00952 set_images(wrongcount);
00953
00954
00955 char popstring[100];
00956 if(strcmp(gtk_entry_get_text(GTK_ENTRY(playername)),"") == 0)
00957 {
00958 strcpy(popstring,"Enter Name plzzz");
00959 popup_box(popstring);
00960 return FALSE;
00961 }
00962
00963
00964 gtk_entry_set_editable(GTK_ENTRY(playername), 0);
00965
00966
00967
00968 strcpy(randomcategory,"a");
00969 printf("ANIMAL clicked\n");
00970
00971 get_random_element(randomcategory);
00972 int length = strlen(randomname);
00973
00974 int i;
00975 for(i = 0; i < length; i++)
00976 showstring[i] = '#';
00977 showstring[length] = '\0';
00978 gtk_entry_set_text(GTK_ENTRY (entry), showstring);
00979 return FALSE;
00980 }
00981
00982
00986 gint action_button_fruit(GtkWidget *widget, GdkEvent *event, gpointer value)
00987 {
00988 wrongcount = 0;
00989 set_images(wrongcount);
00990
00991
00992 char popstring[100];
00993 if(strcmp(gtk_entry_get_text(GTK_ENTRY(playername)),"") == 0)
00994 {
00995 strcpy(popstring,"Enter Name plzzz");
00996 popup_box(popstring);
00997 return FALSE;
00998 }
00999
01000
01001 gtk_entry_set_editable(GTK_ENTRY(playername), 0);
01002
01003
01004 strcpy(randomcategory,"f");
01005 printf("FRUIT clicked\n");
01006
01007 get_random_element(randomcategory);
01008 int length = strlen(randomname);
01009
01010 int i;
01011 for(i = 0; i < length; i++)
01012 showstring[i] = '$';
01013 showstring[length] = '\0';
01014 gtk_entry_set_text(GTK_ENTRY (entry), showstring);
01015 return FALSE;
01016 }
01017
01018
01024 int main( int argc, char *argv[])
01025 {
01026
01027 setup_tables();
01028
01029 gtk_init(&argc, &argv);
01030 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
01031 gtk_window_set_default_size(GTK_WINDOW(window), 340, 200);
01032 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
01033
01034 entry_text = (gchar *)malloc(30);
01035 entry = gtk_entry_new ();
01036 gtk_entry_set_max_length(GTK_ENTRY(entry), 30);
01037
01038 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK (enter_callback), (gpointer)entry);
01039 gtk_entry_set_text(GTK_ENTRY (entry), "Select A Category...");
01040 gtk_entry_set_editable(GTK_ENTRY(entry), 0);
01041 gtk_widget_show (entry);
01042
01043 vbox = gtk_vbox_new(FALSE,0);
01044
01045 playername_text = (gchar *)malloc(30);
01046 playername = gtk_entry_new ();
01047 gtk_entry_set_max_length(GTK_ENTRY(playername), 30);
01048 g_signal_connect(G_OBJECT(playername), "activate", G_CALLBACK (playername_callback), (gpointer)playername);
01049 gtk_widget_show (playername);
01050
01051 table = gtk_table_new(2, 13, TRUE);
01052 gtk_window_set_title(GTK_WINDOW(window), "-----------------Hangman-----------------");
01053
01054 gtk_table_set_row_spacings(GTK_TABLE(table), 4);
01055 gtk_table_set_col_spacings(GTK_TABLE(table), 4);
01056
01057 button[0] = gtk_button_new_with_label("A");
01058 button[1] = gtk_button_new_with_label("B");
01059 button[2] = gtk_button_new_with_label("C");
01060 button[3] = gtk_button_new_with_label("D");
01061 button[4] = gtk_button_new_with_label("E");
01062 button[5] = gtk_button_new_with_label("F");
01063 button[6] = gtk_button_new_with_label("G");
01064 button[7] = gtk_button_new_with_label("H");
01065 button[8] = gtk_button_new_with_label("I");
01066 button[9] = gtk_button_new_with_label("J");
01067 button[10] = gtk_button_new_with_label("K");
01068 button[11] = gtk_button_new_with_label("L");
01069 button[12] = gtk_button_new_with_label("M");
01070 button[13] = gtk_button_new_with_label("N");
01071 button[14] = gtk_button_new_with_label("0");
01072 button[15] = gtk_button_new_with_label("P");
01073 button[16] = gtk_button_new_with_label("Q");
01074 button[17] = gtk_button_new_with_label("R");
01075 button[18] = gtk_button_new_with_label("S");
01076 button[19] = gtk_button_new_with_label("T");
01077 button[20] = gtk_button_new_with_label("U");
01078 button[21] = gtk_button_new_with_label("V");
01079 button[22] = gtk_button_new_with_label("W");
01080 button[23] = gtk_button_new_with_label("X");
01081 button[24] = gtk_button_new_with_label("Y");
01082 button[25] = gtk_button_new_with_label("Z");
01083
01084 gtk_table_attach_defaults(GTK_TABLE(table), button[0], 0, 1, 0, 1);
01085 gtk_table_attach_defaults(GTK_TABLE(table), button[13], 0, 1, 1, 2);
01086
01087 gtk_table_attach_defaults(GTK_TABLE(table), button[1], 1, 2, 0, 1);
01088 gtk_table_attach_defaults(GTK_TABLE(table), button[14], 1, 2, 1, 2);
01089
01090 gtk_table_attach_defaults(GTK_TABLE(table), button[2], 2, 3, 0, 1);
01091 gtk_table_attach_defaults(GTK_TABLE(table), button[15], 2, 3, 1, 2);
01092
01093 gtk_table_attach_defaults(GTK_TABLE(table), button[3], 3, 4, 0, 1);
01094 gtk_table_attach_defaults(GTK_TABLE(table), button[16], 3, 4, 1, 2);
01095
01096 gtk_table_attach_defaults(GTK_TABLE(table), button[4], 4, 5, 0, 1);
01097 gtk_table_attach_defaults(GTK_TABLE(table), button[17], 4, 5, 1, 2);
01098
01099 gtk_table_attach_defaults(GTK_TABLE(table), button[5], 5, 6, 0, 1);
01100 gtk_table_attach_defaults(GTK_TABLE(table), button[18], 5, 6, 1, 2);
01101
01102 gtk_table_attach_defaults(GTK_TABLE(table), button[6], 6, 7, 0, 1);
01103 gtk_table_attach_defaults(GTK_TABLE(table), button[19], 6, 7, 1, 2);
01104
01105 gtk_table_attach_defaults(GTK_TABLE(table), button[7], 7, 8, 0, 1);
01106 gtk_table_attach_defaults(GTK_TABLE(table), button[20], 7, 8, 1, 2);
01107
01108 gtk_table_attach_defaults(GTK_TABLE(table), button[8], 8, 9, 0, 1);
01109 gtk_table_attach_defaults(GTK_TABLE(table), button[21], 8, 9, 1, 2);
01110
01111 gtk_table_attach_defaults(GTK_TABLE(table), button[9], 9, 10, 0, 1);
01112 gtk_table_attach_defaults(GTK_TABLE(table), button[22], 9, 10, 1, 2);
01113
01114 gtk_table_attach_defaults(GTK_TABLE(table), button[10], 10, 11, 0, 1);
01115 gtk_table_attach_defaults(GTK_TABLE(table), button[23], 10, 11, 1, 2);
01116
01117 gtk_table_attach_defaults(GTK_TABLE(table), button[11], 11, 12, 0, 1);
01118 gtk_table_attach_defaults(GTK_TABLE(table), button[24], 11, 12, 1, 2);
01119
01120 gtk_table_attach_defaults(GTK_TABLE(table), button[12], 12, 13, 0, 1);
01121 gtk_table_attach_defaults(GTK_TABLE(table), button[25], 12, 13, 1, 2);
01122
01123 g_signal_connect (G_OBJECT (button[0]),"clicked",G_CALLBACK(action_button_a),NULL);
01124 g_signal_connect (G_OBJECT (button[1]),"clicked",G_CALLBACK(action_button_b),NULL);
01125 g_signal_connect (G_OBJECT (button[2]),"clicked",G_CALLBACK(action_button_c),NULL);
01126 g_signal_connect (G_OBJECT (button[3]),"clicked",G_CALLBACK(action_button_d),NULL);
01127 g_signal_connect (G_OBJECT (button[4]),"clicked",G_CALLBACK(action_button_e),NULL);
01128 g_signal_connect (G_OBJECT (button[5]),"clicked",G_CALLBACK(action_button_f),NULL);
01129 g_signal_connect (G_OBJECT (button[6]),"clicked",G_CALLBACK(action_button_g),NULL);
01130 g_signal_connect (G_OBJECT (button[7]),"clicked",G_CALLBACK(action_button_h),NULL);
01131 g_signal_connect (G_OBJECT (button[8]),"clicked",G_CALLBACK(action_button_i),NULL);
01132 g_signal_connect (G_OBJECT (button[9]),"clicked",G_CALLBACK(action_button_j),NULL);
01133 g_signal_connect (G_OBJECT (button[10]),"clicked",G_CALLBACK(action_button_k),NULL);
01134 g_signal_connect (G_OBJECT (button[11]),"clicked",G_CALLBACK(action_button_l),NULL);
01135 g_signal_connect (G_OBJECT (button[12]),"clicked",G_CALLBACK(action_button_m),NULL);
01136 g_signal_connect (G_OBJECT (button[13]),"clicked",G_CALLBACK(action_button_n),NULL);
01137 g_signal_connect (G_OBJECT (button[14]),"clicked",G_CALLBACK(action_button_o),NULL);
01138 g_signal_connect (G_OBJECT (button[15]),"clicked",G_CALLBACK(action_button_p),NULL);
01139 g_signal_connect (G_OBJECT (button[16]),"clicked",G_CALLBACK(action_button_q),NULL);
01140 g_signal_connect (G_OBJECT (button[17]),"clicked",G_CALLBACK(action_button_r),NULL);
01141 g_signal_connect (G_OBJECT (button[18]),"clicked",G_CALLBACK(action_button_s),NULL);
01142 g_signal_connect (G_OBJECT (button[19]),"clicked",G_CALLBACK(action_button_t),NULL);
01143 g_signal_connect (G_OBJECT (button[20]),"clicked",G_CALLBACK(action_button_u),NULL);
01144 g_signal_connect (G_OBJECT (button[21]),"clicked",G_CALLBACK(action_button_v),NULL);
01145 g_signal_connect (G_OBJECT (button[22]),"clicked",G_CALLBACK(action_button_w),NULL);
01146 g_signal_connect (G_OBJECT (button[23]),"clicked",G_CALLBACK(action_button_x),NULL);
01147 g_signal_connect (G_OBJECT (button[24]),"clicked",G_CALLBACK(action_button_y),NULL);
01148 g_signal_connect (G_OBJECT (button[25]),"clicked",G_CALLBACK(action_button_z),NULL);
01149
01150 button1 = gtk_button_new_with_label(">> Countries <<");
01151 button2 = gtk_button_new_with_label(">> Animals <<");
01152 button3 = gtk_button_new_with_label(">> Fruits <<");
01153
01154 g_signal_connect (G_OBJECT (button2),"clicked",G_CALLBACK(action_button_animal),NULL);
01155 g_signal_connect (G_OBJECT (button1),"clicked",G_CALLBACK(action_button_country),NULL);
01156 g_signal_connect (G_OBJECT (button3),"clicked",G_CALLBACK(action_button_fruit),NULL);
01157
01158 image0 = gtk_image_new_from_file("hangman0.png");
01159 image1 = gtk_image_new_from_file("hangman1.png");
01160 image2 = gtk_image_new_from_file("hangman2.png");
01161 image3 = gtk_image_new_from_file("hangman3.png");
01162 image4 = gtk_image_new_from_file("hangman4.png");
01163 image5 = gtk_image_new_from_file("hangman5.png");
01164 image6 = gtk_image_new_from_file("hangman6.png");
01165
01166 label = gtk_label_new("here is the scores....");
01167 label1 = gtk_label_new("Choose your category");
01168 label2 = gtk_label_new("Enter your name");
01169 label3 = gtk_label_new(" ");
01170 label4 = gtk_label_new(" ");
01171
01172
01173
01174 gtk_box_pack_start (GTK_BOX (vbox), label4, FALSE, FALSE, 0);
01175 gtk_box_pack_start (GTK_BOX (vbox), label2, FALSE, FALSE, 0);
01176 gtk_box_pack_start (GTK_BOX (vbox), playername, FALSE, FALSE, 0);
01177 gtk_box_pack_start (GTK_BOX (vbox), label3, FALSE, FALSE, 0);
01178 gtk_box_pack_start (GTK_BOX (vbox), label1, FALSE, FALSE, 0);
01179 gtk_box_pack_start (GTK_BOX (vbox), button1, FALSE, FALSE, 0);
01180 gtk_box_pack_start (GTK_BOX (vbox), button2, FALSE, FALSE, 0);
01181 gtk_box_pack_start (GTK_BOX (vbox), button3, FALSE, FALSE, 0);
01182 gtk_box_pack_start (GTK_BOX (vbox), image0, FALSE, FALSE, 0);
01183 gtk_box_pack_start (GTK_BOX (vbox), image1, FALSE, FALSE, 0);
01184 gtk_box_pack_start (GTK_BOX (vbox), image2, FALSE, FALSE, 0);
01185 gtk_box_pack_start (GTK_BOX (vbox), image3, FALSE, FALSE, 0);
01186 gtk_box_pack_start (GTK_BOX (vbox), image4, FALSE, FALSE, 0);
01187 gtk_box_pack_start (GTK_BOX (vbox), image5, FALSE, FALSE, 0);
01188 gtk_box_pack_start (GTK_BOX (vbox), image6, FALSE, FALSE, 0);
01189
01190 gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
01191 gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
01192 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
01193
01194 gtk_container_add(GTK_CONTAINER(window), vbox);
01195
01196
01197 g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), G_OBJECT(window));
01198
01199 gtk_widget_show_all(window);
01200 set_images(wrongcount);
01201
01202
01203 gtk_main();
01204 return 0;
01205 }
01206