#include #include #include // Bouton quitter void OnQuitBtn(GtkWidget *pBtn, gpointer data); void jeu (GtkWidget *widget, gpointer data); typedef struct jeu { GtkWidget *jeubouton[9][9]; GtkWidget *pionjoueur1; GtkWidget *damejoueur1; GtkWidget *pionjoueur2; GtkWidget *damejoueur2; char joueur1[20]; char joueur2[20]; char joueurcourant[20]; char joueurdebut[20]; } jeu; //Début programme int main(int argc, char *argv[]) { //Création Widget GtkWidget *fenetre, *pTable, *pMenuBar, *pMenu,*pMenuItem,*pVBox,*pionjoueur1,*pionjoueur2,*damejoueur1,*damejoueur2,*aspect_frame; GtkWidget *jeubouton[9][9]; GtkWidget *position; jeu game; GtkSettings *default_settings = gtk_settings_get_default(); g_object_set(default_settings, "gtk-button-images", TRUE, NULL); gtk_init(&argc,&argv); fenetre=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(fenetre),"Jeu de Dames"); gtk_window_set_resizable(GTK_WINDOW(fenetre),TRUE); gtk_window_set_default_size(GTK_WINDOW(fenetre), 240, 240); g_signal_connect(G_OBJECT(fenetre), "destroy", G_CALLBACK(gtk_main_quit),NULL); pVBox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(fenetre), pVBox); pMenuBar = gtk_menu_bar_new(); /* ETAPE 2 */ pMenu = gtk_menu_new(); /* ETAPE 3 */ pMenuItem = gtk_menu_item_new_with_label("Nouvelle partie"); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); pMenuItem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); pMenuItem = gtk_menu_item_new_with_label("Regles du jeu"); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); pMenuItem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); pMenuItem = gtk_menu_item_new_with_label("Quitter"); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnQuitBtn), (GtkWidget*) fenetre); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); /* ETAPE 4 */ pMenuItem = gtk_menu_item_new_with_label("Fichier"); /* ETAPE 5 */ gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu); /* ETAPE 6 */ gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem); /* Ajout du menu a la fenetre */ gtk_box_pack_start(GTK_BOX(pVBox), pMenuBar, FALSE, FALSE, 0); pMenuItem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem); /* par défaut, les cases font environ 30×30 px, c'est plus joli :-° */ gtk_window_set_default_size (GTK_WINDOW (fenetre), 9 * 30, 9 * 30); /* frame d'aspect */ aspect_frame = gtk_aspect_frame_new (NULL, 0.5, 0.5, 9/(9 * 1.0), FALSE); gtk_frame_set_shadow_type (GTK_FRAME (aspect_frame), GTK_SHADOW_NONE); gtk_container_add (GTK_CONTAINER (pVBox), aspect_frame); pTable = gtk_table_new(9, 9,TRUE); gtk_container_add(GTK_CONTAINER(aspect_frame), pTable); gtk_table_set_row_spacing(GTK_TABLE(pTable), 0, 0); gtk_table_set_col_spacing(GTK_TABLE (pTable), 0, 0); gtk_box_pack_start(GTK_BOX(pVBox), pTable, TRUE, TRUE,0); int i; int j; for (i=0;i<9;i++) { for (j=0;j<9;j++) { game.jeubouton[i][j] = gtk_button_new(); } } for (i=0; i<9;i++) { for (j=0;j<9;j++) { gtk_table_attach_defaults(GTK_TABLE(pTable), game.jeubouton[i][j],i,i+1,j,j+1); } } for(j=0;j<9;j++) { for(i=0;i<9;i++) { g_signal_connect( G_OBJECT(game.jeubouton[i][j]), "clicked", G_CALLBACK(jeu), &game); } } for (j=0;j<2;j++){ for (i=0;i<9;i++){ pionjoueur1= gtk_image_new_from_file("/Users/Christophe/Downloads/pionblanc.jpg"); gtk_button_set_image(GTK_BUTTON(game.jeubouton[i][j]), pionjoueur1); } } for (j=7;j<9;j++){ for (i=0;i<9;i++){ pionjoueur2= gtk_image_new_from_file("/Users/Christophe/Downloads/pionnoir.jpg"); gtk_button_set_image(GTK_BUTTON(game.jeubouton[i][j]), pionjoueur2); } } damejoueur1 = gtk_image_new_from_file("/Users/Christophe/Downloads/dameblanche.jpg"); gtk_button_set_image(GTK_BUTTON(game.jeubouton[4][0]),damejoueur1); // Dame2 damejoueur2 = gtk_image_new_from_file("/Users/Christophe/Downloads/damenoir.jpg"); gtk_button_set_image(GTK_BUTTON(game.jeubouton[4][8]), damejoueur2); GdkColor couleur1; gdk_couleur_parse("#BD33A4",&couleur1); gtk_widget_modify_bg(game.jeubouton[4][4], 0, &couleur1); position=gtk_label_new(sprintf "%d %d", i, j); gtk_container_add(GTK_CONTAINER(pVBox), position); gtk_widget_show_all(fenetre); gtk_main(); return 0; } void OnQuitBtn(GtkWidget* widget, gpointer data) { GtkWidget *pQuestion;/* Creation de la boite de message */ /* Type : Question > GTK_MESSAGE_QUESTION */ /* Boutons : 1 OUI, 1 NON > GTK_BUTTONS_YES_NO */ pQuestion = gtk_message_dialog_new (GTK_WINDOW(data), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "hey charbo, Voulez vous vraiment\nquitter ce programme?"); /* Affichage et attente d une reponse */ switch(gtk_dialog_run(GTK_DIALOG(pQuestion))) { case GTK_RESPONSE_YES: /* OUI > on quitte l application */ gtk_main_quit(); break; case GTK_RESPONSE_NO: /* NON > on detruit la boite de message */ gtk_widget_destroy(pQuestion); break; } } void jeu (GtkWidget *widget, gpointer data) {}