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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 041 fois - Téléchargée 33 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
8
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

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

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.