salut a vous tous
j'esseye depuis deux semaines a faire fonctionner mon application et je n'est pas arriver.
c'est generateur-resolveur d'une grille de sudoku.
J'ai pas reussis a faire interagir les boutons "GENERER" et "RESOUDRE" avec l'algorithme.
Svvvvvvp aidez moi il faut que je rend l'application dans quelques jours
la matrice Grille[9][9] contient la grille non resolue
la matrice Grille1[9][9] contient la grille resolue
pButton[9][9] est une matrice d'image où chaque chaque case contient une image de numero de 1..9 selon la matrice Grille
pTable est une table où je vais inseres la matrice pbutton

voici le code de linterface
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
 /*  Declaration des variables de l'interface  */
    GtkWidget *pWindow;
    GtkWidget *pVBox;
    GtkWidget *pHBox;
    GtkWidget *pButton1[4];
    GtkWidget *pImage;
    GtkWidget *generer;
    GtkWidget *resoudre;
    GtkWidget *quitter;
    GtkWidget *enregistrer;
    GtkWidget *pTable;
    GtkWidget *pButton[9][9];
 
 
    gtk_init(&argc, &argv);
 
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(pWindow), 300, 300);
    gtk_window_set_title(GTK_WINDOW(pWindow), "Sudoku_Ensi");
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_resizable (GTK_WINDOW(pWindow), FALSE);
    gtk_window_set_position  (GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
    g_signal_connect(G_OBJECT(pWindow), "delete-event", G_CALLBACK(OnQuit), NULL);
 
    /* Creation et insertion de la table 3 lignes 2 colonnes */
    pTable=gtk_table_new(9,9,FALSE);
 //   gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
 
    gtk_table_set_row_spacings(GTK_TABLE(pTable),  0);
    gtk_table_set_col_spacings(GTK_TABLE(pTable), 0 );
    gtk_table_set_row_spacing(GTK_TABLE(pTable), 2, 6);
    gtk_table_set_row_spacing(GTK_TABLE(pTable), 5, 6);
    gtk_table_set_col_spacing(GTK_TABLE(pTable), 2, 6);
    gtk_table_set_col_spacing(GTK_TABLE(pTable), 5, 6);
 
  //  gtk_table_set_homogeneous( GTK_TABLE(pTable), FALSE);
 
       /* Creation de la GtkBox verticale */
    pVBox = gtk_vbox_new(FALSE, 0);
 
    /* Ajout de la GtkVBox dans la fenetre */
    gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
 
       /* Chargement d'une image a partir d'un fichier */
    pImage  = gtk_image_new_from_file("./grille.bmp");
    generer = gtk_image_new_from_file("./generer1.bmp");
    resoudre = gtk_image_new_from_file("./resoudre1.bmp");
    quitter = gtk_image_new_from_file("./quitter1.bmp");
    enregistrer = gtk_image_new_from_file("./enregistrer.bmp");
 
        /* Creation des boutons */
    pButton1[0] = gtk_button_new();
    pButton1[1] = gtk_button_new();
    pButton1[2] = gtk_button_new();
    pButton1[3] = gtk_button_new();
 
   // ajout des images aux boutons
   gtk_container_add(GTK_CONTAINER(pButton1[0]), generer);
   gtk_container_add(GTK_CONTAINER(pButton1[1]), resoudre);
   gtk_container_add(GTK_CONTAINER(pButton1[2]),enregistrer);
   gtk_container_add(GTK_CONTAINER(pButton1[3]), quitter);
 
    /* Ajout de Bouton 1 dans la GtkVBox */
     gtk_box_pack_start(GTK_BOX(pVBox), pTable, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(pVBox), pButton1[0], TRUE, TRUE, 5);
 
    /* Creation de la box horizontale */
    pHBox = gtk_hbox_new(TRUE, 0);
 //   gtk_box_pack_start(GTK_BOX(pVBox), pTable, TRUE, TRUE, 0);
    /* Ajout de la GtkHBox dans la GtkVBox */
    gtk_box_pack_start(GTK_BOX(pVBox), pHBox, TRUE, TRUE, 0);
 
    /* Ajout des boutons 2 et 3 dans la GtkHBox */
    gtk_box_pack_start(GTK_BOX(pHBox), pButton1[1], TRUE, TRUE, 5);
    gtk_box_pack_start(GTK_BOX(pHBox), pButton1[2], TRUE, TRUE, 5);
 
    /* Ajout du dernier bouton dans la GtkVBox */
    gtk_box_pack_start(GTK_BOX(pVBox), pButton1[3], TRUE, TRUE, 5);
 
    /* Connexion du signal "clicked" du bouton */
    g_signal_connect(G_OBJECT(pButton1[3]), "clicked", G_CALLBACK(on_quitter_btn), NULL);
    g_signal_connect(G_OBJECT(pButton1[0]), "clicked", G_CALLBACK(generer_grille), NULL);
    g_signal_connect(G_OBJECT(pButton1[1]), "clicked", G_CALLBACK(resoudre_grille), NULL);
 
 
 
    gtk_widget_show_all(pWindow);
 
    gtk_main();
 
    return EXIT_SUCCESS;
}
et voici la fonction callback de la bouton generer
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
void generer_grille(GtkWidget *pButton[0])
{
 
    int niv =  0 , v = 0 ;
 
    niv = rand () ;
    srand (niv);
    srand(niv%65536);
    Make(Solution);
    srand(rand()+niv/65536);
 
    for (int lin = 0 ; lin < size ; lin++)
        for (int col = 0 ; col < size ; col++)
        {
            Tab[lin*size+col].col = col;
            Tab[lin*size+col].lin = lin;
        }
 
    for ( int i = 0 ; i < size ; i ++ )
               for ( int j = 0 ; j < size ; j ++ )
            {
                {
                   Grille1[i][j] =  Grille[i][j] ;
                }
            }
 
    for (int indice = 0 ; indice < size*size ; indice++)
    {
        int ind = rand()%(size*size-indice);
        int nb = Grille[Tab[ind].col][Tab[ind].lin];
        Grille[Tab[ind].col][Tab[ind].lin] = 0;
        if (!IsPossible(Grille))
           Grille[Tab[ind].col][Tab[ind].lin] = nb;
        Tab[ind].col = Tab[size*size-indice-1].col;
        Tab[ind].lin = Tab[size*size-indice-1].lin;
    }
    // affichage de la Non resolue
 
    for (int lin = 0 ; lin < size ; lin++)
    {
        for (int col = 0 ; col < size ; col++)
        {
 
 
                v = Grille[lin][col] ;
 
                if ( v == 0 )
                pButton[col][lin] = gtk_image_new_from_file("./zero1.bmp");
                else if ( v == 1 )
                pButton[col][lin] = gtk_image_new_from_file("./un1.bmp");
                else if ( v == 2 )
                pButton[col][lin] = gtk_image_new_from_file("./deux1.bmp");
                else if ( v == 3 )
                pButton[col][lin] = gtk_image_new_from_file("./trois1.bmp");
                else if ( v == 4 )
                pButton[col][lin] = gtk_image_new_from_file("./quatre1.bmp");
                else if ( v == 5 )
                pButton[col][lin] = gtk_image_new_from_file("./cinq1.bmp");
                else if ( v == 6 )
                pButton[col][lin] = gtk_image_new_from_file("./six1.bmp");
                else if ( v == 7 )
                pButton[col][lin] = gtk_image_new_from_file("./sept1.bmp");
                else if ( v == 8 )
                pButton[col][lin] = gtk_image_new_from_file("./huit1.bmp");
                else if ( v == 9 )
                pButton[col][lin] = gtk_image_new_from_file("./neuf1.bmp");
 
        }
 
    }
 
       for (int i = 0 ; i < 9 ; i++ )
            for (int j = 0 ; j < 9 ; j++ )
            {
      {
        gtk_table_attach(GTK_TABLE(pTable), pButton[i][j],
        i, i+1, j, j+1 ,
        GTK_EXPAND  , GTK_SHRINK,
        0, 00);
 
      }
 
       }
}