Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
UN NOMBRE À CALCULER
Description
Voici un petit programme très simple, mettant en oeuvre les principes de base de GTK+ (2.4 au moins). Avec une fonction Callback associée au bouton de validation du calcul. Attention, j'ai mis tous les widgets en variables globales, c'est plus simple dans un premier temps pour les débutants... (Bientôt, je mettrais aussi sur ce site une calculatrice complète et fonctionnelle en GTK+ 2.4). Bonne étude...
Source
- #include <gtk/gtk.h>
- #include <stdlib.h>
- #include <string.h>
-
- // ligne à utiliser pour la compilation sous Linux :
- // gcc nombre_a_calc.c -o nombre_a_calc.exe `pkg-config --cflags --libs gtk+-2.0`
-
- GtkWidget *fenetre;
- GtkWidget *vbox;
- GtkWidget *lab_calcul_a_faire;
- GtkWidget *entry_resultat;
- GtkWidget *bout_valider;
- GtkWidget *lab_infos;
-
- gint a, b, c;
-
- void preparer_un_nouveau_calcul(void);
- void verification(GtkWidget *widget, gpointer data);
-
- int main(int argc, char **argv)
- {
- gtk_init(&argc, &argv);
-
- fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request (fenetre, 300, 200);
- gtk_window_set_title (GTK_WINDOW (fenetre), "Trouver la valeur");
- g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
-
- vbox = gtk_vbox_new (TRUE, 10);
- gtk_container_add (GTK_CONTAINER (fenetre), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 20);
-
- lab_calcul_a_faire = gtk_label_new ( "un calcul" );
- gtk_box_pack_start (GTK_BOX (vbox), lab_calcul_a_faire, FALSE, FALSE, 0);
- preparer_un_nouveau_calcul();
-
- entry_resultat = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (vbox), entry_resultat, FALSE, FALSE, 0);
-
- bout_valider = gtk_button_new_with_label("Valider votre réponse");
- gtk_box_pack_start (GTK_BOX (vbox), bout_valider, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(bout_valider),"clicked",G_CALLBACK(verification), NULL);
-
- lab_infos = gtk_label_new("Tentez une réponse !");
- gtk_box_pack_start (GTK_BOX (vbox), lab_infos, FALSE, FALSE, 0);
-
- gtk_widget_show_all(fenetre);
- gtk_main();
-
- return EXIT_SUCCESS;
- }
-
- void preparer_un_nouveau_calcul(void)
- {
- srand(time(NULL));
- a = rand() % 5;
- b = rand() % 5;
- c = a*b;
-
- gtk_label_set_text(GTK_LABEL(lab_calcul_a_faire),
- g_strdup_printf ("Calculez %d x %d =", a, b) );
- }
-
- void verification(GtkWidget *widget, gpointer data)
- {
- const gchar *result_recupere;
- gint resultat;
-
- result_recupere = gtk_entry_get_text(GTK_ENTRY(entry_resultat));
-
- resultat=atoi(result_recupere);
-
- if(resultat==c)
- {
- gtk_label_set_text(GTK_LABEL(lab_infos),"Bonne réponse ! Recommencez...");
- }
- else {
- gtk_label_set_text(GTK_LABEL(lab_infos),"Mauvaise réponse ! Ré-essayez...");
- }
-
- preparer_un_nouveau_calcul();
-
- gtk_entry_set_text(GTK_ENTRY(entry_resultat),"");
- }
-
-
-
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
// ligne à utiliser pour la compilation sous Linux :
// gcc nombre_a_calc.c -o nombre_a_calc.exe `pkg-config --cflags --libs gtk+-2.0`
GtkWidget *fenetre;
GtkWidget *vbox;
GtkWidget *lab_calcul_a_faire;
GtkWidget *entry_resultat;
GtkWidget *bout_valider;
GtkWidget *lab_infos;
gint a, b, c;
void preparer_un_nouveau_calcul(void);
void verification(GtkWidget *widget, gpointer data);
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (fenetre, 300, 200);
gtk_window_set_title (GTK_WINDOW (fenetre), "Trouver la valeur");
g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
vbox = gtk_vbox_new (TRUE, 10);
gtk_container_add (GTK_CONTAINER (fenetre), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 20);
lab_calcul_a_faire = gtk_label_new ( "un calcul" );
gtk_box_pack_start (GTK_BOX (vbox), lab_calcul_a_faire, FALSE, FALSE, 0);
preparer_un_nouveau_calcul();
entry_resultat = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entry_resultat, FALSE, FALSE, 0);
bout_valider = gtk_button_new_with_label("Valider votre réponse");
gtk_box_pack_start (GTK_BOX (vbox), bout_valider, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(bout_valider),"clicked",G_CALLBACK(verification), NULL);
lab_infos = gtk_label_new("Tentez une réponse !");
gtk_box_pack_start (GTK_BOX (vbox), lab_infos, FALSE, FALSE, 0);
gtk_widget_show_all(fenetre);
gtk_main();
return EXIT_SUCCESS;
}
void preparer_un_nouveau_calcul(void)
{
srand(time(NULL));
a = rand() % 5;
b = rand() % 5;
c = a*b;
gtk_label_set_text(GTK_LABEL(lab_calcul_a_faire),
g_strdup_printf ("Calculez %d x %d =", a, b) );
}
void verification(GtkWidget *widget, gpointer data)
{
const gchar *result_recupere;
gint resultat;
result_recupere = gtk_entry_get_text(GTK_ENTRY(entry_resultat));
resultat=atoi(result_recupere);
if(resultat==c)
{
gtk_label_set_text(GTK_LABEL(lab_infos),"Bonne réponse ! Recommencez...");
}
else {
gtk_label_set_text(GTK_LABEL(lab_infos),"Mauvaise réponse ! Ré-essayez...");
}
preparer_un_nouveau_calcul();
gtk_entry_set_text(GTK_ENTRY(entry_resultat),"");
}
Conclusion
Voilà, en espérant que cela serve aux débutants...
Calogero GIGANTE
http://www.gigante.be/
Historique
- 13 janvier 2006 07:57:19 :
- ...
Sources de la même categorie
Commentaires
|
|