begin process at 2008 07 06 16:36:12
1 205 660 membres
227 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MORPION EN C


Information sur la source

Catégorie :Jeux Niveau : Débutant Date de création : 19/03/2003 Date de mise à jour : 19/03/2003 13:27:58 Vu : 2 562

Note :
Aucune note

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

un simple jeu du morpion !

Source

  • /*Simple jeu de morpion*/
  • //les includes
  • #include <stdio.h>
  • #include <stdlib.h>
  • //les déclarations
  • char matrice[3][3]; //matrice du morpion
  • char fin;
  • //prototypes des fonctions
  • char check(void);
  • void init_matrice(void);
  • void joueur(void);
  • void joueur2(void);
  • void disp_matrice(void);
  • //programme principal
  • int main(void)
  • {
  • //les déclarations
  • char done;
  • printf("Ceci est le jeu du morpion\n");
  • printf("Vous jouez contre un ami a vous\n");
  • done = ' ';
  • init_matrice();
  • do
  • {
  • disp_matrice();
  • joueur();
  • //déterminer s'il existe un vainqueur
  • done = check();
  • if (done != ' ') break; //gagné
  • player2();
  • //déterminer s'il existe un vainqueur
  • done = check();
  • }
  • while (done == ' ');
  • if(done == 'X') printf("Vous avez gagné\n");
  • else printf("J\'ai gagné\n");
  • //afficher les positions finales
  • disp_matrice();
  • getch();
  • }
  • //initialiser la matrice
  • void init_matrice(void)
  • {
  • //déclarations
  • int i, j;
  • for (i = 0; i < 3; i++)
  • for (j = 0; j < 3; j++) matrice[i][j] = ' ';
  • }
  • //obtenir un mouvement du joueur
  • void joueur(void)
  • {
  • //déclarations
  • int x, y;
  • //le joueur décide où il va jouer
  • la :
  • printf("Pour jouer, entrez les coordonnées x et y\n\n");
  • scanf("%d %d", &x, &y);
  • getchar();
  • x--;
  • y--;
  • //vérification de la validité des coordonnées entrées par le joueur
  • if(matrice[x][y] != ' ')
  • {
  • printf("choix non valide, réentrez vos coordonnées\n");
  • goto la;
  • }
  • else matrice[x][y] = 'O';
  • }
  • //faire jouer l'ordinateur
  • void player2(void)
  • {
  • //déclarations (oui je sais je suis chiant à toujours marquer ça)
  • int i, j;
  • for(i = 0; i < 3; i++) {
  • for(j = 0; j < 3; j++) {
  • if(matrice[i][j] == ' ') goto ici;
  • }
  • }
  • if(matrice[i][j] == 'O') getch();
  • //on teste si la partie est nulle
  • ici :
  • if(i * j == 9)
  • {
  • printf("partie nulle\n");
  • }
  • else matrice[i][j] = 'X';
  • }
  • //afficher la matrice à l'écran
  • void disp_matrice(void)
  • {
  • //une seule déclaration ce coup ci ;-)
  • int t;
  • for(t = 0; t < 3; t++)
  • {
  • printf(" %c | %c | %c", matrice[t][0], matrice[t][1], matrice[t][2]);
  • if(t != 2) printf("\n---|---|---\n");
  • }
  • printf("\n");
  • }
  • //déterminer s'il y a un vainqueur
  • char check(void)
  • {
  • //LA déclaration (la dernière) !!!
  • int i;
  • //vérification des lignes
  • for(i = 0; i < 3; i++)
  • if(matrice[i][0] == matrice[i][1] && matrice [i][0] == matrice[i][2])
  • {
  • return matrice[i][0];
  • }
  • //contrôle des colonnes
  • for(i = 0; i < 3; i++)
  • if(matrice[0][i] == matrice[1][i] && matrice[0][i] == matrice[2][i])
  • {
  • return matrice[0][i];
  • }
  • //examen des diagonales
  • if(matrice[0][0] == matrice[1][1] && matrice[1][1] == matrice[2][2])
  • {
  • return matrice[0][0];
  • }
  • if(matrice[0][2] == matrice[1][1] && matrice[1][1] == matrice[2][0])
  • {
  • return matrice[0][2];
  • }
  • return ' ';
  • }
/*Simple jeu de morpion*/

//les includes
#include <stdio.h>
#include <stdlib.h>

//les déclarations
char matrice[3][3];             //matrice du morpion
char fin;

//prototypes des fonctions
char check(void);
void init_matrice(void);
void joueur(void);
void joueur2(void);
void disp_matrice(void);

//programme principal
int main(void)
{

//les déclarations
char done;

printf("Ceci est le jeu du morpion\n");
printf("Vous jouez contre un ami a vous\n");

done = ' ';
init_matrice();

do
  {
  disp_matrice();
  joueur();

  //déterminer s'il existe un vainqueur
  done = check();
         if (done != ' ') break;  //gagné
  player2();

  //déterminer s'il existe un vainqueur
  done = check();
  }
while (done == ' ');
  if(done == 'X') printf("Vous avez gagné\n");
  else printf("J\'ai gagné\n");

//afficher les positions finales
disp_matrice();
getch();
}

//initialiser la matrice
void init_matrice(void)
{

//déclarations
int i, j;

for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) matrice[i][j] = ' ';

}

//obtenir un mouvement du joueur
void joueur(void)
{

//déclarations
int x, y;

//le joueur décide où il va jouer
la :
printf("Pour jouer, entrez les coordonnées x et y\n\n");
scanf("%d %d", &x, &y);
getchar();
x--;
y--;

//vérification de la validité des coordonnées entrées par le joueur
if(matrice[x][y] != ' ')
   {
   printf("choix non valide, réentrez vos coordonnées\n");
   goto la;
   }
else matrice[x][y] = 'O';

}

//faire jouer l'ordinateur
void player2(void)
{

//déclarations (oui je sais je suis chiant à toujours marquer ça)
int i, j;

  for(i = 0; i < 3; i++) {
    for(j = 0; j < 3; j++) {
      if(matrice[i][j] == ' ') goto ici;
} 
} 
if(matrice[i][j] == 'O') getch();


//on teste si la partie est nulle
ici :
if(i * j == 9)
  {
  printf("partie nulle\n");
  }
else matrice[i][j] = 'X';
}

//afficher la matrice à l'écran
void disp_matrice(void)
{

//une seule déclaration ce coup ci ;-)
int t;

for(t = 0; t < 3; t++)
  {
  printf(" %c | %c | %c", matrice[t][0], matrice[t][1], matrice[t][2]);
  if(t != 2) printf("\n---|---|---\n");
  }
  printf("\n");
}

//déterminer s'il y a un vainqueur
char check(void)
{

//LA déclaration (la dernière) !!!
int i;

//vérification des lignes
for(i = 0; i < 3; i++)
  if(matrice[i][0] == matrice[i][1] && matrice [i][0] == matrice[i][2])
  {
  return matrice[i][0];
  }

//contrôle des colonnes
for(i = 0; i < 3; i++)
  if(matrice[0][i] == matrice[1][i] && matrice[0][i] == matrice[2][i])
  {
  return matrice[0][i];
  }

//examen des diagonales
if(matrice[0][0] == matrice[1][1] && matrice[1][1] == matrice[2][2])
{
return matrice[0][0];
}

if(matrice[0][2] == matrice[1][1] && matrice[1][1] == matrice[2][0])
{
return matrice[0][2];
}

return ' ';
}

  • signaler à un administrateur
    Commentaire de cmarsc le 19/03/2003 17:21:25

    il te faut &lt;conio.h&gt; ou &lt;conio.c&gt; devc++4 pour utiliser getch()

  • signaler à un administrateur
    Commentaire de lynkdr le 19/03/2003 18:58:05

    Ah ? Chez moi ca marche parfaitement et j'utilise Dev C++ 4 donc...

  • signaler à un administrateur
    Commentaire de 3mier le 21/03/2003 10:38:25

    C'est bien pour debuter en C.
    mai il faut mieu eviter l'utilisation des GOTOs et BREAKs.
    il faut le  #include &lt;conio.h&gt; pour getch() , ou bien remplacer le par getchar().

  • signaler à un administrateur
    Commentaire de lynkdr le 21/03/2003 12:47:24

    Ok pour les goto et break, mais pour le conio.h je suis pas d'accord, ca se compile sans probleme chez moi et il n'y a aucun bug ni rien donc, pas d'accord!!!
    sinon merci des conseils.

  • signaler à un administrateur
    Commentaire de YodaKyce le 21/03/2003 16:23:05

    Bah c'est surement parce que ton compilateur intègre automatiquement conio.h comme s'est une bibliotheque somme toute assez courante...
    Pareil, tu peux très bien faire un printf(...) sans mettre stdio.h, ton compilateur le mettra tout seul...
    Si tu compiles avec toutes les options d'alertes (sous dev je sais pas, pour gcc c avec l'optoin -Wall par exemple), il doit te générer un warning disant que tu n'as po mis conio.h mais qu'il fait le link tout seul...

  • signaler à un administrateur
    Commentaire de lynkdr le 22/03/2003 20:11:17

    a peut etre !
    merci de l'explication!

    tant que j'y suis j'exploite un peu tes connaissances, je voudrais faire un programme qui se declenche toutes les deux semaines, le probleme c'est que je ne sais pas du tout me servir des fonctions de temp.h alors je me disais... tu pourrais pas me mettre un exemple tout simple pour la fonction qui permet de compter les jours (ou les semaines) stp?

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS