Bien le bonsoir.
Dans le cadre d'un projet, je dois réaliser un jeu d'Othello (dérivé du reversi). À savoir un jeu de pions, avec des pions noirs et des pions blancs.

Afin de représenter mon damier et mes pions, j'ai choisi la facilité : un tableau de boutons à deux dimensions. Je mettrai ensuite dans ces boutons une image représentant -au choix- soit le pion noir, soit le pion blanc.

Mon souci :
Il semblerait que je ne puisse utiliser une image que dans un seul bouton à la fois.
Je n'ai pas bien envie de créer 128 images (deux pour chacune des 64 cases du damier), il doit sans douter exister une solution plus élégante et c'est pour cela que j'en appelle à vos avis éclairés.

Un peu de code maintenant, pour vous aider à cerner mon problème...

J'ai déclaré mes deux images comme gtk_image_new_from_file(), rien d'anormal.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
img_noir = gtk_image_new_from_file("etc/noir.png");
img_blanc = gtk_image_new_from_file("etc/blanc.png");
Ensuite, je construit mon tableau. Les widgets grille_vbox et grille_hbox[] sont les conteneurs qui structurent ma grille.
Chaque bouton est créé comme gtk_button_new().

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
grille_vbox = gtk_vbox_new(TRUE, 0);
gtk_box_pack_start(GTK_BOX(fenetre_vbox), grille_vbox, TRUE, TRUE, 5);
 
for(i=0; i<8; i++)
{
	grille_hbox[i] = gtk_hbox_new(TRUE, 2);
	gtk_box_pack_start(GTK_BOX(grille_vbox), grille_hbox[i], TRUE, TRUE, 1);
 
	for(j=0; j<8; j++)
	{
		cases[j][i] = gtk_button_new();
		gtk_box_pack_start(GTK_BOX(grille_hbox[i]), cases[j][i], TRUE, TRUE, 1);
	} 
}
Tous mes boutons sont contenus dans un tableau de GtkWidget* cases[][]. Je souhaite alors ajouter les images dans les 4 cases centrales, comme le veut la règle du jeu.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
gtk_button_set_image(GTK_BUTTON(cases[3][3]), img_blanc);
gtk_button_set_image(GTK_BUTTON(cases[4][3]), img_noir);
gtk_button_set_image(GTK_BUTTON(cases[3][4]), img_noir);
gtk_button_set_image(GTK_BUTTON(cases[4][4]), img_blanc);
Le problème intervient ici, seuls les boutons en [3][4] et [4][4] ont leur image.
À chaque fois que j'essaie d'utiliser une de mes deux images sur un nouveau bouton, l'image va sur le nouvel emplacement et s'efface du précédent.


Voici donc mes petits soucis. Pas le problème du siècle, mais mes recherches n'ont pas abouti.
Merci d'avance !