Bonjour !
J'ai vu qu'il y avait déjà des questions ressemblant a celle a venir sur le fofo, mais aucune ne me donnant la bonne réponse, désole d'avance si doublon il y a !
Alors je développe en ce moment un jeu de labyrinthe, sous Gtk, en C.
Mon problème vient du rafraichissement de l'image du labyrinthe :
celle-ci se compose de cases, qui sont elles mêmes des images. J'ai donc des Hbox qui contiennent une ligne d'images, ces Hbox sont contenues dans une Vbox, que l'on appellera...hummm...Boiboite pour s'y retrouver.
Boiboite est contenue dans une box générale, entre autres box, menus et compagnie.
Le délire serai en fait de mettre a jour Boiboite, elle et elle seule, lors du déplacement du personnage dans le labyrinthe.
Donc au déclenchement de la réaction générée par le pressement (pressation ?) d'une flèche directionnelle, je recharge la grille (board) du labyrinthe, re-fabrique mon image (Boiboite), et veux actualiser Boiboite dans la fenêtre, sans avoir a refaire cette fenêtre.
Une idée ?
Merci d'avance !
PS : j'ai déjà essaye :
sans succès, sans trop avoir compris ce que j'essayais, mais quand même !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while (gtk_events_pending ()) { gtk_main_iteration (); }
Et pour être plus complet :
Avec void lab(Board *board, GtkWidget *boiboite)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 void on_key_press(Board *board, GdkEventKey *event) { switch (event->keyval) { case _LEFT: player_move(board, LEFT); // Board = matrice du labyrinthe, player_move la redessine break; case _UP: player_move(board, UP); break; case _RIGHT: player_move(board, RIGHT); break; case _DOWN: player_move(board, DOWN); break; } boxlabyrinthe = gtk_vbox_new(FALSE, 0); // Creation container vertical lab(board, boxlabyrinthe); // Remplissage de Boiboite avec des petites images gtk_widget_draw(GTK_WIDGET(boxlabyrinthe), NULL); //gtk_widget_show_all(pWindow); // Affichage fenetre //gtk_container_add(GTK_CONTAINER(pWindow), boxlabyrinthe); //gtk_widget_show(boxlabyrinthe); //affichage_fenetre(pWindow,boxlabyrinthe); }
Partager