Bonjour, voilà quelques conseils:
- - sépare le fond (l'état de test cases) de la forme (la manière dont tu les affiches)
- - précharge et mets de côté toutes les images donc tu auras besoin
- - utilise gtk_image_set_from_pixbuf pour mettre à jour le contenu des cases. Comme tu as déjà l'état de la case et chargé les images, tu as très peu de choses à faire dans cette fonction
- - utilise snprintf pour générer le nom du fichier d'image ou g_strdup_printf, ça évite les d'écrire 15 fois la même chose avec just un chiffre qui change:
image = gtk_image_new_from_file("0.png");
Autre remarque, à quoi servent tdj et tdv ? On dirait que tu gères le contenu de la table et sa visibilité dans des tables différentes. Utilise plutôt une table unique et un masque de bits pour savoir si une case a été découverte. Pas besoin d'un int pour l'état d'une case, tu as 10 états possibles seulement (4 bits), et pour chaque état savoir si la case est découverte ou pas (1 bit). Donc un guint8 (équivalent d'un unsigned char) est suffisant.
Coté GTK+, le delete-event ne te sert à rien, tu n'as que le signal destroy à gérer. Pour celà, on appelle en général gtk_main_quit() directement en tant que callback:
g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
Partager