Commen pe ton faire pr creer un damier 8X8

Résolu
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008 - 4 mars 2006 à 23:50
razily Messages postés 250 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 4 décembre 2013 - 18 févr. 2009 à 17:47
#include <stdlib.h>
#include <gtk/gtk.h>

#define LARGEUR 600
#define LONGUEUR 400

// le probleme c'est jai qune ligne de bouton et non pa un damier de boutton

void OnDestroy(GtkWidget *pWidget, gpointer pData)
{
/* Arret de la boucle evenementielle */
gtk_main_quit();
}

int main(int argc,char **argv)
{
/* Declaration du widget */
GtkWidget *pFenetre;
GtkWidget *pVOthellier;
GtkWidget *pHOthellier[8];
GtkWidget *pContourHaut[8];
GtkWidget *pContourGauche[8];
GtkWidget *pCase[8];
int i,j;
gtk_init(&argc,&argv);

/* Creation de la fenetre */
pFenetre=gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* Definition de la position */
gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WINDOW_TOPLEVEL);
/* Definition de la taille de la fenetre */
gtk_window_set_default_size(GTK_WINDOW(pFenetre), LARGEUR, LONGUEUR);
/* Titre de la fenetre */
gtk_window_set_title(GTK_WINDOW(pFenetre),
"damier");
/* Connexion du signal "destroy" */
g_signal_connect(G_OBJECT(pFenetre), "DestruirepFenetre", G_CALLBACK(OnDestroy), NULL);
/* Creation de la GtkBox verticale */
pVOthellier = gtk_vbox_new(TRUE, 0);
/* Ajout de la GtkVBox dans la fenetre */
gtk_container_add(GTK_CONTAINER(pFenetre), pVOthellier);


/* Creation de la box horizontale */
for(i=0;i<=7;i++)
pHOthellier[i] = gtk_hbox_new(TRUE, 0);


/* Creation des boutons */
for(i=0;i<=7;i++)
pCase[i] = gtk_button_new_with_label("Bouton 1");


/* Ajout de la GtkHBox dans la GtkVBox */
for(i=0;i<=7;i++)
gtk_box_pack_start(GTK_BOX(pVOthellier), pHOthellier[i], TRUE, TRUE, 0);


for(i=0;i<=7;i++)
for(j=0;j<=7;j++)
gtk_box_pack_end(GTK_BOX(pHOthellier[i]), pCase[j], FALSE, FALSE, 0);

/* Affichage de la fenetre */
gtk_widget_show_all(pFenetre);

/* Demarrage de la boucle evenementielle */
gtk_main();

return EXIT_SUCCESS;
}

11 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 mars 2006 à 19:46
Soit tu créés un hbox dans lequel tu mets ton vbox qui contient tes 8 hbox. Mais tu pourras pas régler précisément la taille.

Soit tu peux utiliser un GtkFixed, qui te permet de placer des objets,
en donnant leurs coordonnées en pixel. D'ailleurs tu pourrais utiliser
ca au lieu de ta série de hbox:

http://developer.gnome.org/doc/API/2.0/gtk/GtkFixed.html
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 mars 2006 à 12:35
Utilise une table, ca sera plus lisible, et c'est l'idéal dans ton cas.



Et comment veux tu que ca marches, tu n'as que 8 boutons pour un damier de 64, il y a un problème quand meme.



Note que:

gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WINDOW_TOPLEVEL);

Tu dois avoir une erreur de compilation la.

Remplace par ca: gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WIN_POS_CENTER);



Tu veux une version correct, ou tu cherches encore ?
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 12:44
En fait je debute sur gtk je voudrais plutot une reponse concrete
les tables je maitrise pas du tout.
et si ya que 8 bouton en faite jai essayer de mettre dans une vbox 8 hbox et dans chaque hbox une bouton autrement dit:

bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8

un damier 8X8 de bouton
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 12:47
Une fois que je pourais faire sa v men servir pr faire un damier othello
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
5 mars 2006 à 18:00
Oui mais tu ne peux pas mettre plusieurs fois le meme bouton dans des hbox différents, t'es daccord ?



Donc ton damier devrait plutot ressembler a ca:

bouton11 bouton12 bouton13 ...

bouton21 bouton22 bouton23 ...

bouton31 bouton32 bouton33 ...



Non ?
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 19:21
ok. sa je savais pas c pe etre pr sa que sa marche pas. Mnt je vais essayer de creer un damier avec 2 pion noir et 2 pion blanc le reste sera vide
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 19:21
ok. sa je savais pas c pe etre pr sa que sa marche pas. Mnt je vais essayer de creer un damier avec 2 pion noir et 2 pion blanc le reste sera vide
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 19:22
si tu peut maider ya pas de soucis
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
5 mars 2006 à 19:30
maintenant jai reussi a faire un damier
ms je voudrais savoir comment mettre ceci
qui se trouve dans une fenetre 400 X200 dans une fenetre 600X400
en gros comm sa il me restera de la place pr mettre des menu ou autre autour du damier
bouton1 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton8
bouton11 bouton22 bouton23 bouton24bouton25 bouton26bouton27 bouton28
bouton21 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton38
bouton31 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton48
bouton41 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton58
bouton51 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton68
bouton61 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton78
bouton71 bouton2 bouton3 bouton4 bouton5 bouton6 bouton7 bouton88
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
6 mars 2006 à 09:29
je voudrais connaitre linstruction qui permet de changer dimage des
quon clique dessus???(je debute avec gtk de laide serais la bien
venue).....
0
razily Messages postés 250 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 4 décembre 2013
18 févr. 2009 à 17:47
salut,
moi aussi suis débutant sur gtk et je dois construire un labyrinthe comme projet . mais mon problème c'est d'insérer ou de dessiner les cases !!
face à ta question ce serait mieux si tu utilises des tables comme widget !! :

exemple :
#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{

GtkWidget *Table;
GtkWidget*Fenetre;
GtkWidget*boutton;
/*création et attachement de la table*/

    Table=gtk_table_new(3,2,TRUE);  /*3 lignes et 2 colonnes TRUE pr avoir la même taille des cases*/
   gtk_container_add(GTK_CONTAINER(Fenetre), GTK_WIDGET(Table));
/*création bouton*/
  boutton = gtk_button_new_with_label(values[pos]);
/*attacher un bouton dans la table */
gtk_table_attach_defaults(GTK_TABLE(table), button, nbre_colonne_inférieure,nbre_colonne_supérieure, nbre_ligne_inf, nbre_col_sup);

/*par exemple si tu veux mettre un bouton à la case ligne 3 et colonne 2*/
gtk_table_attach_defaults(GTK_TABLE(table), button, 1,2, 2, 3);

 gtk_container_add(GTK_CONTAINER(window), table);

  g_signal_connect_swapped(G_OBJECT(window), "destroy",
        G_CALLBACK(gtk_main_quit), G_OBJECT(window));

  gtk_widget_show_all(window);

  gtk_main();

  return 0;

}
0
Rejoignez-nous