Commen pe ton faire pr creer un damier 8X8 [Résolu]

sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 4 mars 2006 à 23:50 - Dernière réponse : razily 254 Messages postés lundi 9 mars 2009Date d'inscription 4 décembre 2013 Dernière intervention
- 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;
}
Afficher la suite 

Votre réponse

11 réponses

luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 5 mars 2006 à 19:46
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de luhtor
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 5 mars 2006 à 12:35
0
Utile
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 ?
Commenter la réponse de luhtor
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 12:44
0
Utile
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
Commenter la réponse de sy3ns
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 12:47
0
Utile
Une fois que je pourais faire sa v men servir pr faire un damier othello
Commenter la réponse de sy3ns
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 5 mars 2006 à 18:00
0
Utile
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 ?
Commenter la réponse de luhtor
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 19:21
0
Utile
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
Commenter la réponse de sy3ns
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 19:21
0
Utile
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
Commenter la réponse de sy3ns
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 19:22
0
Utile
si tu peut maider ya pas de soucis
Commenter la réponse de sy3ns
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 5 mars 2006 à 19:30
0
Utile
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
Commenter la réponse de sy3ns
sy3ns 80 Messages postés lundi 20 février 2006Date d'inscription 16 avril 2008 Dernière intervention - 6 mars 2006 à 09:29
0
Utile
je voudrais connaitre linstruction qui permet de changer dimage des
quon clique dessus???(je debute avec gtk de laide serais la bien
venue).....
Commenter la réponse de sy3ns
razily 254 Messages postés lundi 9 mars 2009Date d'inscription 4 décembre 2013 Dernière intervention - 18 févr. 2009 à 17:47
0
Utile
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;

}
Commenter la réponse de razily

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.