# include # include # include # include "graphsimple.h" # define M 30 /* nb de pixels de la maille */ # define NBL 5 /* nb de lignes */ # define NbM 5 /* nb de mines */ /* Quand M, NBL et NBC sont connues, les constantes suivantes s'en deduisent */ # define R (M/3) # define HW ((NBL+2)*M) /* La grille est entouree d'une marge. Les largeurs de la marge, d'une ligne et d'une colonne sont identiques (en pixels). Quand le joueur clique dans la marge, le jeu s'arrete. */ void Init(int Gr[][NBL+2], int S[][NBL+2]); void DessinerGrille(); void LigColKlick (int *L, int *C); int Marge(int L, int C); void Actualiser1G (int Gr[][NBL+2], int L, int C); int compte(int G[][NBL+2], int S[][NBL+2], int li, int co); int main (void) { int G[NBL+2][NBL+2], S[NBL+2][NBL+2]; int li, co, nbmines,nbvoisins; char str[100]; srand(time(NULL)); Init(G,S); DessinerGrille(); LigColKlick (&li, &co); nbmines=NBL*NBL; while(!Marge(li, co) && ((nbvoisins=compte(G,S,li,co))!=-1) && nbmines>NbM) { nbmines--; printf(">> %d\n",nbmines); S[li][co]=nbvoisins; sprintf(str,"%d",nbvoisins); Ecrire(co*M+M/2,li*M+M/2,str); LigColKlick (&li, &co); } Clore(); return 0; } int compte(int G[][NBL+2], int S[][NBL+2], int i, int j) { int k,l,nb; if(G[i][j]==1) return(-1); else{ nb=0; printf("%d,%d\n",i,j); for(k=i-1; k<=i+1; k++) for(l=j-1; l<=j+1; l++) nb+=G[k][l]; printf(">>%d\n",nb); } return(nb); } void Init(int Gr[][NBL+2], int S[][NBL+2]) { int i, j, nb; for (i=0; i