Bonjour

J'ai crée un Jeu d'échec, qui pour le moment marche pas mal.

J'ai rajouté une IA perso (que j'ai crée de A a Z), et voici ma question

Je souhaite donc que après que le joueur est joué il y ai une pause de 3 seconde, avant de lancé la fonction qui fera joué l' IA.

Le problème c'est que lorsque j' ajoute la fonction Sleep(3000); il ne met pas a jour la fenêtre et la mise a jour de la fenêtre se fait uniquement après avoir fait joué l'IA...

Moi je voudrais savoir comment faire pour actualiser la fenetre avant de faire joué l'IA.

Pour information, Je lance la fonction IA après que le joueur est cliqué sur la case d'arrivé, puis j'avais mis la pause, cependant, l'affichage, n'avait pas changer...

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
void deplacement(GtkButton *button, s_case *V_case)
{
int mouvement;
int coup_fait = 0;
/* cas possible pions
a) déplacement ni d'une case en avant ni d'une case en diagonale => annuler le coup
b) si déplacement d'une case en avant, la case en avant doit être vide
   b1) oui, on fait le déplacement
   b2) non, on annule le coup
c) si déplacement en diagonale, la case en daigonale doit contenir un pion de la couleur opposée
   c1) oui on fait le déplacement et on supprime un des pions de la couleur opposée
   c2) non, on annule le coup
*/
 
........................................................
 
enregistrement(echiquier); // On enregistre le jeu actuelle
printf("\n TourJoueur %d \n", tourJoueur);
 
modifier_contenu(echiquier[X1][Y1].x,echiquier[X1][Y1].y, echiquier[X1][Y1].contenu);
modifier_contenu(echiquier[V_case->x][V_case->y].x,echiquier[V_case->x][V_case->y].y, echiquier[V_case->x][V_case->y].contenu);
 
 
if((coup_fait == 1) && (IA != 0))
{
    Sleep(3000);
	playIA();
}
 
 
if(resultat_jeu == 1) // On verifie la victoire
    {
        fin_du_jeu_graph_joueur1();
    }
if(resultat_jeu == 2)
    {
        fin_du_jeu_graph_joueur2();
    }
gtk_main();
}
 
/*
 fonction : PlayIA()
 but : Cette fonction permet faire joué l'IA
paramètres : NONE
 
*/
void playIA()
{
switch(IA)
	{
		case  1:
		case -1:
			tourJoueur = testIA(IA);
			break;
		case 0:
		default :
		break;
	}
}

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
void modifier_contenu(int x, int y, enum e_modif modif)
{
    switch (modif)
    {
    case C_NOIR : // SI le contenu est noir
        {
            if(echiquier_graphique[x][y].initialisation == 0) // Première initialisation : création de l'échiquier
            {
                echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/noir.png"); // Chargement de l'image
                echiquier_graphique[x][y].pButton = gtk_button_new (); // Création d'un nouveau bouton
                echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2); // Création d'un boite
                gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox); // Ajout de la boite au bouton
                gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0); // On ajoute l'image a la boite
                gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2); // et on attache le bouton a la fenetre
                compteur2 =compteur2+1;
 
            }
            else // Si il s'agit d'un déplacement
            {
                gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/noir.png");
            }
            break;
        }
    case C_BLANC : // Même commentaire que précédement
        {
        if(echiquier_graphique[x][y].initialisation == 0)
            {
            echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/blanc.png");
            echiquier_graphique[x][y].pButton = gtk_button_new ();
            echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2);
            gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox);
            gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0);
            gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2);
            compteur2 =compteur2+1 ;
            }
        else  // Même commentaire que précédement
            {
                gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/blanc.png");
            }
        break;
        }
    case C_NOIRNOIR : // Même commentaire que précédement
        {
        if(echiquier_graphique[x][y].initialisation == 0)
            {
                echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/pionNn.png");
                echiquier_graphique[x][y].pButton = gtk_button_new ();
                echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2);
                gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox);
                gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0);
                gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2);
                compteur2 =compteur2+1 ;
            }
        else // Même commentaire que précédement
            {
                gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionNn.png");
            }
        break;
        }
    case C_NOIRBLANC : // Même commentaire que précédement
        {
            if(echiquier_graphique[x][y].initialisation == 0)
            {
                echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/pionNb.png");
                echiquier_graphique[x][y].pButton = gtk_button_new ();
                echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2);
                gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox);
                gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0);
                gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2);
                compteur2 =compteur2+1 ;
            }
        else // Même commentaire que précédement
            {
                gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionNb.png");
            }
        break;
        }
    case C_BLANCBLANC : // Même commentaire que précédement
        {
            if(echiquier_graphique[x][y].initialisation == 0)
            {
                echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/pionBb.png");
                echiquier_graphique[x][y].pButton = gtk_button_new ();
                echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2);
                gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox);
                gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0);
                gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2);
                compteur2 =compteur2+1 ;
            }
        else // Même commentaire que précédement
            {
                gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionBb.png");
            }
        break;
        }
    case C_BLANCNOIRE : // Même commentaire que précédement
        {
            if(echiquier_graphique[x][y].initialisation == 0)
            {
                echiquier_graphique[x][y].pImage = gtk_image_new_from_file("./Images/pionBn.png");
                echiquier_graphique[x][y].pButton = gtk_button_new ();
                echiquier_graphique[x][y].pBox = gtk_hbox_new (FALSE, 2);
                gtk_container_add (GTK_CONTAINER (echiquier_graphique[x][y].pButton), echiquier_graphique[x][y].pBox);
                gtk_box_pack_start (GTK_BOX (echiquier_graphique[x][y].pBox), echiquier_graphique[x][y].pImage, TRUE, TRUE, 0);
                gtk_table_attach_defaults(GTK_TABLE(pTable), echiquier_graphique[x][y].pButton, y, y+1,x+1, x+2);
                compteur2 =compteur2+1 ;
            }
        else // Même commentaire que précédement
            {
            gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionBn.png");
            }
        break;
        }
    case C_BLANCNOIRVERT : // Même commentaire que précédement
        {
        gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionBnselec.png");
        compteur2 =compteur2+1 ;
        break;
        }
    case C_BLANCBLANCVERT : // Même commentaire que précédement
        {
        gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionBbselec.png");
        compteur2 =compteur2+1 ;
        break;
        }
    case C_NOIRBLANCVERT : // Même commentaire que précédement
        {
        gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionNbselec.png");
        compteur2 =compteur2+1 ;
        break;
        }
    case C_NOIRNOIRVERT : // Même commentaire que précédement
        {
            //printf("\n1(%d :%d)", x,y);
        gtk_image_set_from_file(GTK_IMAGE(echiquier_graphique[x][y].pImage), "./Images/pionNnselec.png");
        compteur2 =compteur2+1 ;
        break;
        }
 
    default :
        printf("\n pb dans switch");
        break;
    }
    printf("\nLa valeur du compteur est %d\n",compteur2);
gtk_widget_show_all(echiquier_graphique[x][y].pButton);
A chaque cas il s'agit d'une modification d'image.
J'ai tenté plusieurs chose comme le Gtk_Widget_show_all....

Merci a tous de votre aide