Code :
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <time.h>
- #include<alloc.h>
- #define taille 10
- void main (void)
- { // Déclarations des variables locales et des fonctions
- int vecteur_morpion[taille][taille];
- int xi,xj,temp;
- int vecteur_resultat[2];
- int sortie;
- void affiche(int vecteur_morpion[][taille], int n);
- void coup_gagnant(int vecteur_morpion[][taille],int vecteur_resultat[2],int n);
- int joueur_gagnant(int vecteur_morpion[][taille], int n);
- int c_est_fini(int vecteur_morpion[][taille],int n);
- void matrice_zero(int vecteur_morpion[][taille]);
- int coup_permis (int i, int j, int vecteur_morpion[][taille], int n );
- // Fin des déclarations
- randomize();
- matrice_zero(vecteur_morpion);
- do
- {
- affiche(vecteur_morpion,taille); printf("\n" );
- for (int i=0;i<taille;i++)
- {
- printf("\n" );
- for (int j=0;j<taille;j++)
- {
- printf ("%2d",coup_permis (i,j,vecteur_morpion,taille));
- }
- }
- if (joueur_gagnant(vecteur_morpion,taille)==1)
- {
- printf("perdu" );
- goto sortir;
- }
- if (c_est_fini(vecteur_morpion,taille)==1)
- {
- printf("fin" );
- goto sortir;
- }
- printf("\n" );
- do
- {
- sortie=0;
- printf ("selectionner des coordonnées de jeux\n" );
- scanf ("%d %d",&xi,&xj);
- if (xi>taille || xi<1 || xj>taille || xj<1)
- {
- printf("mauvaises coordonnées\n" );
- }
- else
- {
- if (coup_permis(xi-1,xj-1,vecteur_morpion,taille))
- {
- printf("jouer une autre case\n" ) ;
- }
- else
- {
- sortie=1;
- }
- }
- }while (sortie==0);
- vecteur_morpion[xi-1][xj-1]=-1;
- if (joueur_gagnant(vecteur_morpion,taille)==-1)
- {
- printf("bravo" );
- goto sortir;
- }
- if (c_est_fini(vecteur_morpion,taille)==1)
- {
- printf("fin" );
- goto sortir;
- }
- coup_gagnant(vecteur_morpion,vecteur_resultat,taille);
- } while(1);
- sortir :
- affiche(vecteur_morpion,taille); printf("\n" );
- for (int i=0;i<taille;i++)
- {
- printf("\n" );
- for (int j=0;j<taille;j++)
- {
- printf ("%2d",coup_permis (i,j,vecteur_morpion,taille));
- }
- }
- getche();
- } // fin du main
- void matrice_zero(int vecteur_morpion[][taille])
- { int i,j;
- for (i=0;i<taille;i++)
- { for (j=0;j<taille;j++)
- {
- (vecteur_morpion[i][j]=0);
- }}}
- // Fonction : Affiche la matrice du scorpion
- void affiche(int vecteur_morpion[][taille], int n)
- {
- int i,j ;
- for (i=0;i<n;i++)
- { printf("\n" );
- for (j=0;j<n;j++)
- {
- printf("%2d ",vecteur_morpion[i][j]);
- }
- }
- } // Fin de la fonction : Affiche la matrice du scorpion
- int coup_permis (int i, int j, int vecteur_morpion[][taille], int n )
- {
- if ( vecteur_morpion[i][j] == 0 ) return 0 ;
- else return 1 ;
- }
- int joueur_gagnant(int vecteur_morpion[][taille], int n)
- {
- int *Res[10];
- Res=(int (*)[10][10]) malloc(n * sizeof(int)*10*10);
- for (int i=0;i<n;i++)
- {
- for (int j=0;j<n;j++)
- {
- Res[n+j] += vecteur_morpion [i][j];
- Res[i] += vecteur_morpion [i][j];
- }
- }
- for (int i=0;i<n;i++)
- {
- Res[2*n] += vecteur_morpion [i] [i];
- Res[2*n+1] += vecteur_morpion [n-1-i] [i];
- }
- for(int i=0;i<((2*n)+2);i++)
- {
- if (Res[i]==n || Res[i]==(n*-1))return Res[i]/n;
- }
- return 0;
- free(Res);
- }
- int c_est_fini(int vecteur_morpion[][taille],int n)
- {
- int fin=1;
- for (int i=0;i<n;i++)
- {
- for (int j=0;j<n;j++)
- {
- if (vecteur_morpion[i][j]==0) fin=0;
- }
- }
- return fin ;
- }
- void coup_gagnant(int vecteur_morpion[][taille],int vecteur_resultat[2],int n)
- {
- int hazard=random(n*n)+1;
- for (int i=0;i<taille;i++)
- {
- for (int j=0;j<n;j++)
- {
- if (coup_permis(i,j,vecteur_morpion,n)==0)
- {
- vecteur_morpion[i][j]=1;
- if (joueur_gagnant(vecteur_morpion,n)==1) goto sortie_fonction;
- vecteur_morpion[i][j]=0;
- }
- }
- }
- do
- {
- for (int i=0;i<taille;i++)
- {
- for (int j=0;j<taille;j++)
- {
- if (coup_permis(i,j,vecteur_morpion,taille)==0)
- {
- hazard--;
- if (hazard==0) vecteur_morpion[i][j]=1;
- }
- }
- }
- }while (hazard>0);
- sortie_fonction:
- }
|