1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| #include <stdlib.h>
#include <gtk/gtk.h>
typedef struct
{
int i;
int j;
int n;
GtkWidget *pTable;
GtkWidget *pButton;
}SJeu;
void afficher_image(GtkWidget* pTable, SJeu *Jeu1);
int main(int argc, char **argv)
{
GtkWidget *pWindow;
GtkWidget *pTable; // Table bouton
int i=0, j=0, n=20;
SJeu Jeu1[n*n]; // Donnée du jeu
// GtkWidget *pButton[(n*n)];
GtkWidget *pImage[n*n]; // Table bouton
//int x=1;
//int *D; test pointeur entier
//D=&x;
gtk_init(&argc, &argv);
/* Creation de la fenetre */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(pWindow), "Demineur");
gtk_window_set_default_size(GTK_WINDOW(pWindow), n*10, n*10);
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
/* Creation et insertion de la table n lignes n colonnes */
pTable=gtk_table_new(n,n,TRUE);
gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
/* Creation des boutons */
/* for (i=0; i<(n*n); i++)
{
pButton[i] = gtk_button_new();
}
*/
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
/* n*i donne 0 au premier passage, n au deuxième, 2*n au troisième, etc.
* 0+j = 0 au premier passage, 1 au deuxième, etc. */
Jeu1[j+(n*i)].i=i;
Jeu1[j+(n*i)].j=j;
Jeu1[j+(n*i)].n=n;
Jeu1[j+(n*i)].pTable=pTable;
Jeu1[j+(n*i)].pButton=gtk_button_new();
gtk_table_attach_defaults (GTK_TABLE(pTable), Jeu1[j+(n*i)].pButton, j, j+1, i, i+1);
pImage[n*i+j] =gtk_image_new_from_file(".\\Images\\case.jpg");
gtk_container_add(GTK_CONTAINER(Jeu1[j+(n*i)].pButton), pImage[n*i+j]);
g_signal_connect(G_OBJECT(Jeu1[j+(n*i)].pButton), "clicked", G_CALLBACK(afficher_image), &Jeu1);
}
}
gtk_widget_show_all(pWindow);
gtk_main();
return EXIT_SUCCESS;
}
void afficher_image(GtkWidget* pButton, SJeu *Jeu1)
{
//int x=1;
//D=&x; test pointeur d'entier
//printf("%d\n",*D);
GtkWidget* pImage[200];
GtkWidget *pTable=Jeu1->pTable;
GList *ButtonList=gtk_container_get_children(GTK_CONTAINER(pTable));
GList *list=g_list_first(ButtonList);
int compteur=(Jeu1->n*Jeu1->n)-1;
while (list)
{
if (pButton==(GtkWidget*)list->data)
{
g_print("%d,%d,%d\n", Jeu1[compteur].i, Jeu1[compteur].j, Jeu1[compteur].n);
break;
}
list=g_list_next(list);
compteur--;
}
pImage[compteur] = gtk_image_new_from_stock(GTK_STOCK_ABOUT, GTK_ICON_SIZE_MENU);
gtk_button_set_image (GTK_BUTTON(pButton), pImage[compteur]);
// gtk_table_attach_defaults(GTK_TABLE(pTable), pImage[(Jeu1->n)*(Jeu1->i)+(Jeu1->j)], (Jeu1->j), (Jeu1->j)+1, (Jeu1->i), (Jeu1->i)+1);
} |