#include #include #include #include "bec.h" #include "interface.h" //Début programme int main(int argc, char *argv[]) { //Création Widget abel partie; GtkWidget *fenetre,*pTable, *pMenuBar, *pMenu,*pMenuItem,*pVBox,*pionblanc,*pionnoir,*dameblanc,*damenoir,*aspect_frame; GtkWidget *jeubouton[9][9]; 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); partie.click=1; 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); abel *plateaux; plateaux->pionblanc= gtk_image_new_from_file ("croixblanc.png");//image pion blanc plateaux->pionnoir= gtk_image_new_from_file ("croixnoir.png");// image pion noir plateaux->dameblanc= gtk_image_new_from_file ("croixnoir.png");// image pion noir plateaux->damenoir= gtk_image_new_from_file ("croixnoir.png");// image pion noir int i; int j; for (i=0;i<9;i++) { for (j=0;j<9;j++) { plateaux->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), plateaux->jeubouton[i][j],i,i+1,j,j+1); } } // Connection des boutons for(i=0;i<9;i++) { for(j=0;j<9;j++) { g_signal_connect(G_OBJECT(plateaux->jeubouton[i][j]),"clicked",G_CALLBACK(psg),plateaux); } } for(i=0 ;i<=8 ;i++) { for(j=0 ;j<=8 ;j++) { switch ((int)(plateaux->plateau_modele[i][j])) { case O : gtk_button_set_image (GTK_BUTTON(plateaux->jeubouton[i][j]), NULL); break; case b : gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), pionblanc); break; case B : gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), dameblanc); break; case n : gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), pionnoir);break; case N : gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), damenoir); break; default : break; } } } //initialisation damier for (j=0;j<2;j++){ for (i=0;i<9;i++){ pionblanc= gtk_image_new_from_file("/Users/Christophe/Downloads/pionblanc.jpg"); gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), pionblanc); } } for (j=7;j<9;j++){ for (i=0;i<9;i++){ pionnoir= gtk_image_new_from_file("/Users/Christophe/Downloads/pionnoir.jpg"); gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[i][j]), pionnoir); } } dameblanc = gtk_image_new_from_file("/Users/Christophe/Downloads/dameblanche.jpg"); gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[4][0]),dameblanc); // Dame2 damenoir = gtk_image_new_from_file("/Users/Christophe/Downloads/damenoir.jpg"); gtk_button_set_image(GTK_BUTTON(plateaux->jeubouton[4][8]), damenoir); //couleurs GdkColor casecentrale; gdk_color_parse("#FFFF00", &casecentrale); gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[4][4]), GTK_STATE_NORMAL, &casecentrale); GdkColor casedameblanche; gdk_color_parse("#ED0000",&casedameblanche); GdkColor casedamenoire; gdk_color_parse("#318CE7",&casedamenoire); for(i=0;i<5;i++) { gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[4-i][8-i]), GTK_STATE_NORMAL, &casedameblanche); gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[4+i][i]), GTK_STATE_NORMAL, &casedamenoire); } int k,l; for(k=0;k<3;k++) { gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[k][3-k]), GTK_STATE_NORMAL, &casedameblanche); gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[8-k][5+k]), GTK_STATE_NORMAL, &casedamenoire); } for(l=0;l<2;l++) { gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[3+l][2+l]), GTK_STATE_NORMAL, &casedameblanche); gtk_widget_modify_bg(GTK_WIDGET(partie.jeubouton[5-l][6-l]), GTK_STATE_NORMAL, &casedamenoire); } gtk_widget_show_all(fenetre); gtk_main(); return 0; }