/********************************************************************* Programme de morpion. Le jeu s'arrete qd l'un des joueurs a gagne (ie 3 pions semblables sur une ligne, colonne ou diagonale) ou qd la grille est pleine. http://www-sop.inria.fr/oasis/personnel/Carine.Courbis/c/ **********************************************************************/ #include #define NB_LIG 3 #define NB_COL 3 typedef enum {VIDE, ROND, CROIX} ValeurGrille; typedef enum {FALSE, TRUE} Boolean; static ValeurGrille grille[NB_LIG][NB_COL]; /* grille du morpion valeurs possibles VIDE, ROND ou CROIX */ /* indique quel sera le prochain joueur a mettre un pion dans la grille ie soit ROND soit CROIX */ static int prochainJoueur = ROND; /* * Initialise la grille du morpion a vide */ void initialiseGrille() { /*---------------- a completer */ } /* Affiche la grille du morpion _ indique case vide, O pion joueur 1 et X pion jour 2 */ void afficheGrille() { /*---------------- a completer */ } /* Saisie les coordonnees du nouveau pion a mettre sur la grille Si les coordonnees sont en dehors de la grille ou si la case possede deja un pion, la saisie est refusee, un message d'erreur est affichee, et le joueur doit rejoue */ void metUnPionSurLaGrille() { int ligne, col; printf("Numeros de ligne et de colonne: "); scanf("%d %d", &ligne, &col); /*---------------- a completer */ /* Indique quel sera le prochain pion mis sur la grille */ if (prochainJoueur == ROND) prochainJoueur = CROIX; else prochainJoueur = ROND; } /* Teste si l'un des joueurs a gagne (ligne, colonne ou diagonale remplit de pions semblables). Dans ce cas affiche un message pour indiquer le joueur qui a gagne. S'il n'y a pas de gagnant, teste que la grille n'est pas pleine. Si elle est pleine, affiche un message indiquant qu'aucun des joueurs a gagne Retourne TRUE si la grille est pleine ou si un joueur a gagne FALSE sinon */ Boolean testeFinJeu() { /*---------------- a completer */ /* 1] Teste s'il y a un gagnant */ /* si la case 1,1 est VIDE, cela signifie que les diagonales, la ligne 1 et la colonne 1 ne sont pas gagnantes */ /* si la case 0,0 est vide, cela signifie que la ligne 0 et le colonne 0 ne sont pas gagnantes */ /* si la case 2,2 est vide, cela signifie que la ligne 2 et la colonne 2 ne sont gagnantes */ /* 2] teste si la grille n'est pas pleine */ return TRUE; /* a modifier */ } /* Initialise la grille a vide puis tant que la grille n'est pas pleine ou qu'il n'y a pas un gagnant, saisie les pions des joueurs et affiche la grille */ void main() { initialiseGrille(); do { metUnPionSurLaGrille(); afficheGrille(); }while(!testeFinJeu()); }