Commen pe ton faire pr creer un damier 8X8

Résolu
Signaler
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
250
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2013
-
#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

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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 ?
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

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
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

Une fois que je pourais faire sa v men servir pr faire un damier othello
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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 ?
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

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
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

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
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

si tu peut maider ya pas de soucis
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

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
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

je voudrais connaitre linstruction qui permet de changer dimage des
quon clique dessus???(je debute avec gtk de laide serais la bien
venue).....
Messages postés
250
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2013

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;

}