Tic-tac-toe en c (exams du deug mias...)

0/5 (3 avis)

Snippet vu 9 371 fois - Téléchargée 36 fois

Contenu du snippet

un petit morpion console tombé aux exams de premierer année de deug mias à luniversité des antilles et de la guyanne (je sais ça ennerve...)
voila ma méthode :

Source / Exemple :


#include <stdio.h>

int verifier_position(int plateau[3][3],int ligne,int colonne){
  if ((ligne<3)&&(ligne>=0)){
    if ((colonne<3)&&(colonne>=0))
      if (plateau[ligne][colonne]==0)
	return(1);   
	  } 
  return(0);
}

void placer_pion(int plateau[3][3], int joueur){
  int posx,posy;
  int result=2;
  
  while(result!=1){
    if(result==0)
      printf("\nmauvaise position...\n");
    printf("Entrer la colonne :");
    scanf("%d",&posx);
    printf("Entrer la ligne :");
    scanf("%d",&posy);
    posy--;posx--;
    
    result=verifier_position(plateau,posx,posy);
  }
  plateau[posx][posy]=joueur;
}

void affiche_plateau(int plateau[3][3]){
  int i=0;
   int j=0;
  while(j<3){
    if(i<3){
      switch(plateau[i][j]){
      case 0:
	printf(" ");
        break;
      case 1:
        printf("0");
        break;
      case 2:
        printf("X");
        break;
      }
      i++;
    }else{
      i=0;
      j++;
      printf("\n");
    }
  }
}    
 

void vider_plateau(int plateau[3][3]){
  int i,j;
  for(j=0;j<3;j++)
    for(i=0;i<3;i++)
      plateau[i][j]=0;
}

int verifier_plateau(int plateau[3][3],int joueur){
  int i,j=0;
  int nbcase=0;
  for(i=0;i<3;i++)
    if(plateau[i][j]==joueur)
      if((plateau[i][j+1]==plateau[i][j+2])&&(plateau[i][j+1]==joueur))
	return(1);
 i=0;j=0;
  for(j=0;j<3;j++)
    if(plateau[i][j]==joueur)
    if((plateau[i+1][j]==plateau[i+2][j])&&(plateau[i+1][j]==joueur))
	return(1);    

  i=0;j=0;

    if(plateau[i][j]==joueur)
    if((plateau[i+1][j+1]==plateau[i+2][j+2])&&(plateau[i+1][j+1]==joueur))
	return(1);
 
	i=2;j=0;
   
    if(plateau[i][j]==joueur)
    if((plateau[i-1][j+1]==plateau[i-2][j+2])&&(plateau[i-2][j+2]==joueur))
	return(1);

	i=0;j=0;
    
	for(j=0;j<3;j++)
	 for(i=0;i<3;i++)
	  if (plateau[i][j]!=0)
	    nbcase++;
   
	if(nbcase==9)
          return(2);

	return(0);
}

int main(void){
  int joueur,resultat;
  int plateau[3][3];
  int fin=0;

  vider_plateau(plateau);
  
  printf("Bienvenue dans Tic Tac Toe...\n\n");

  joueur=1;

  while(fin!=1){
    printf("c'est au joueur %d de jouer...\n",joueur);
    placer_pion(plateau,joueur);
    affiche_plateau(plateau);
    resultat=verifier_plateau(plateau,joueur);
    
    if(resultat==1){
      fin=1;
      printf("\nLe joueur %d a gagner...\n",joueur);
    }
    if (resultat==2){
      fin=1;
      printf("\nMatch nul...\n");
    }
    joueur=joueur%2+1;
  }
  getchar();
  return(0);
}

Conclusion :


compile avec gcc

http://mydev.free.fr

A voir également

Ajouter un commentaire Commentaires
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
29 déc. 2002 à 11:23
g pas encore tester, mais c pas mal, je te dit un grand MERCI...
cs_jeremyM Messages postés 85 Date d'inscription dimanche 10 mars 2002 Statut Membre Dernière intervention 17 novembre 2002
14 déc. 2002 à 20:37
oops désolé j'avais pas vu, merci c'est corrigé...
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
14 déc. 2002 à 16:55
Il est sympas ton source mais j'ai l'impression que lors de la saisie tu te plantes pour les lignes et les colonnes
tu demandes la ligne et tu saisies posx or posx situe la colonne
Tu as juste à inverser les mots ligne et colonne pour la saisie et le tour est joué
Voili voilou
Bonne continuation
24KaraS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.