Vous êtes sur la page 1sur 12

Ecole Nationale Supérieure

d’Electricité et de Mécanique

Projet : langage C

Sujet : Jeu du morpion classique

Créé par : AKHMOUCH ZAKARIA


1ère année GIL
Encadré par: le professeur F.MOUTAWAKIL

Mars 2021
Table des matières
1.Affichage du plan de jeu ..................................................................................................................3
2.Saisie des coordonnées ...................................................................................................................5
3.Alternance des joueurs ...................................................................................................................6
4.Fin du jeu ........................................................................................................................................7

2
1.Affichage du plan de jeu
1.1. La fonction qui dessine le plateau.
void plateau(int M[][3]){

1.2. L’affichage du plateau vide.


#include<stdio.h>

void plateau(int M[][3]){

int i,j;

printf("\n -------------\n");

for(i=0;i<3;i++){

printf(" ");

for(j=0;j<3;j++){

printf("|");

if(M[i][j]==0)

printf(" ");

if(M[i][j]==1)

printf("X");

if(M[i][j]==2)

printf("O");

printf("|\n -------------\n");

3
}

int main(){

int M[3][3]={{0,0,0},{0,0,0},{0,0,0}};

plateau(M);

return 0;

1.3. L’affichage du plateau avec les éventuels « X », « O ».


#include<stdio.h>

void plateau(int M[][3]){

int i,j;

printf("\n -------------\n");

for(i=0;i<3;i++){

printf(" ");

for(j=0;j<3;j++){

printf("|");

if(M[i][j]==0)

printf(" ");

if(M[i][j]==1)

printf("X");

if(M[i][j]==2)

4
printf("O");

printf("|\n -------------\n");

2.Saisie des coordonnées


2.1 La saisie des coordonnées puis l’affichage des résultats.
int test=1,i,l,c,choix;

plateau(M);

do{

for(i=1;i<=2 && test!=9;i++){

printf("Joueur numero %d :\n",i);

do{

do{

printf("Donner le numero de la ligne soit 1,2 ou 3 : ");

scanf("%d",&l);

}while(l!=1 && l!=2 && l!=3);

do{

printf("Donner le numero de la colonne soit 1,2 ou 3 : ");

scanf("%d",&c);

2.2 L’affichage de la grille résultante et de la situation de la


case.

int test=1,i,l,c,choix;

5
plateau(M);

do{

for(i=1;i<=2 && test!=9;i++){

printf("Joueur numero %d :\n",i);

do{

do{

printf("Donner le numero de la ligne soit 1,2 ou 3 : ");

scanf("%d",&l);

}while(l!=1 && l!=2 && l!=3);

do{

printf("Donner le numero de la colonne soit 1,2 ou 3 : ");

scanf("%d",&c);

}while(c!=1 && c!=2 && c!=3);

if(M[l-1][c-1]==0){

M[l-1][c-1]=i;

test++;

choix=1;

}else{

printf("la case que vous choisissez est déja remplie !!\n");

choix=0;

3.Alternance des joueurs


3.1 Donner la main aux joueurs
int test=1,i,l,c,choix;

6
plateau(M);

do{

for(i=1;i<=2 && test!=9;i++){

printf("Joueur numero %d :\n",i);

do{

do{

printf("Donner le numero de la ligne soit 1,2 ou 3 : ");

scanf("%d",&l);

}while(l!=1 && l!=2 && l!=3);

do{

printf("Donner le numero de la colonne soit 1,2 ou 3 : ");

scanf("%d",&c);

4.Fin du jeu
4.1. L’arrêt l’lorsque un joueur gagne.
int joueur_gangnant(int M[][3] ){

int i;

for(i=0;i<3;i++){

if(M[i][0]==M[i][1] && M[i][0]==M[i][2] && M[i][0]!=0)

return 1;

for(i=0;i<3;i++){

if(M[0][i]==M[1][i] && M[0][i]==M[2][i] && M[0][i]!=0)

return 1;

if(M[0][0]==M[1][1] && M[0][0]==M[2][2] && M[0][0]!=0)

return 1;

if(M[0][2]==M[1][1] && M[0][2]==M[2][2] && M[0][2]!=0)

7
return 1;

return 0;

4.2. L’arrêt l’lorsque un joueur gagne ou tous les cases sont


occupées.
int joueur_gangnant(int M[][3] ){

int i;

for(i=0;i<3;i++){

if(M[i][0]==M[i][1] && M[i][0]==M[i][2] && M[i][0]!=0)

return 1;

for(i=0;i<3;i++){

if(M[0][i]==M[1][i] && M[0][i]==M[2][i] && M[0][i]!=0)

return 1;

if(M[0][0]==M[1][1] && M[0][0]==M[2][2] && M[0][0]!=0)

return 1;

if(M[0][2]==M[1][1] && M[0][2]==M[2][2] && M[0][2]!=0)

return 1;

return 0;

}while(test<9);

8
printf("Tous les cases sont occupées.\n");

return 0;

4.3. Le programme final.

#include<stdio.h>

void plateau(int M[][3]){

int i,j;

printf("\n -------------\n");

for(i=0;i<3;i++){

printf(" ");

for(j=0;j<3;j++){

printf("|");

if(M[i][j]==0)

printf(" ");

if(M[i][j]==1)

printf("X");

if(M[i][j]==2)

printf("O");

printf("|\n -------------\n");

int joueur_gangnant(int M[][3] ){

int i;

for(i=0;i<3;i++){

9
if(M[i][0]==M[i][1] && M[i][0]==M[i][2] && M[i][0]!=0)

return 1;

for(i=0;i<3;i++){

if(M[0][i]==M[1][i] && M[0][i]==M[2][i] && M[0][i]!=0)

return 1;

if(M[0][0]==M[1][1] && M[0][0]==M[2][2] && M[0][0]!=0)

return 1;

if(M[0][2]==M[1][1] && M[0][2]==M[2][2] && M[0][2]!=0)

return 1;

return 0;

int main(){

int M[3][3]={{0,0,0},{0,0,0},{0,0,0}};

int test=1,i,l,c,choix;

plateau(M);

do{

for(i=1;i<=2 && test!=9;i++){

printf("Joueur numero %d :\n",i);

do{

do{

printf("Donner le numero de la ligne soit 1,2 ou 3 : ");

scanf("%d",&l);

10
}while(l!=1 && l!=2 && l!=3);

do{

printf("Donner le numero de la colonne soit 1,2 ou 3 : ");

scanf("%d",&c);

}while(c!=1 && c!=2 && c!=3);

if(M[l-1][c-1]==0){

M[l-1][c-1]=i;

test++;

choix=1;

}else{

printf("la case que vous choisissez est déja remplie !!\n");

choix=0;

}while(choix==0);

plateau(M);

if(joueur_gangnant(M)==1){

printf("Le joueur numero %d est le gangnant.\n ",i);

return 0;

}while(test<9);

11
printf("Tous les cases sont occupées.\n");

return 0;

12

Vous aimerez peut-être aussi