Jeu de la vie version université de fouillole

Contenu du snippet

Bonjour a tous,
Ben enfaite j'ai 3 raisons de poster mon programme d'une part j'avais envit de le faire histoire de passer pr un vrai génie en info :) ensuite parceke j'aimerai contribuer a l'aide que ce site apporte en matiere de source une aide pour les futures personne a faire un jeu de la vie.
Ce jeu n'est pas comme tout les jeu de la vie car le jeu ne regarde que les voisins situé au dessus en bas a gauche et a droite mais pas sur les diagonales.
Dsl si je n'ai pas mis d'excutable mais enfaite j'arrive pas a utiliser fopen avec l'adresse du fichier sous dev c/c++, et a l'origine je l'ai fait sous linux...
Merci à tous ++

Source / Exemple :


#include<stdio.h>
# define T 9

/*typedef char grille[T][T]*/
void initialise(char tablo[T][T])/*la fonction initialise comme son nom l'indique va initialiser les valeurs du tableau et ainsi mettre les cases blanche autour du tableau de jeu*/
{
   int i,j;
   FILE*f;
   char m[T][T];
  for(i=0;i<=T-1;i++)
     {
       m[0][i]='B';
       m[T-1][i]='B';
       m[i][0]='B';
       m[i][T-1]='B';
     }
   f=fopen("etape0.txt","rt");
   for(i=1;i<T-1;i++)
     for(j=1;j<T-1;j++)
	fscanf(f,"%c",&tablo[i][j]);
   fclose(f);
   return;
}
int affiche(char tablo[T][T])/*la fonction affiche va apartir du fichier texte mettre les caracteres contenu dans ce dernier dans le tableau nommé tablo[T][T]*/
{
   int i,j;
   FILE*f;
   for(i=1;i<T-1;i++)
     {
       printf("\n");
       for(j=1;j<T-1;j++)
	printf("%c",tablo[i][j]);
     }
   printf("\n");
   return;
}
int compte(char tablo[T][T],int i,int j) /*la fonction compte va compter le nombre de voisins de chaque case*/
{
   int voisin;
   voisin=0;
   if((tablo[i-1][j])=='N')
      voisin++;
   if((tablo[i+1][j])=='N')
      voisin++;
   if((tablo[i][j-1])=='N')
      voisin++;
   if((tablo[i][j+1])=='N')
      voisin++;
   return voisin;
}
void echange(char tablo[T][T])/*la fonction echange va recopier les valeur du tableau initial pour les recopier sur un autre tableau et ainsi effectuer kes changement sur le tableau initiale pour ne pas en prendre en compte les changements deja effectuer*/
{
   int nb;
   nb=0;
   char tab[T][T];
   int i,j;
   for(i=0;i<T;i++)
     for(j=0;j<T;j++)
       {
	tab[i][j]=tablo[i][j];
       }
   for(i=1;i<T-1;i++)
     for(j=1;j<T-1;j++)
       {
	nb=compte(tab,i,j);
	switch(nb)
	  {
	  case 0: tablo[i][j]='B';
	    break;
	  case 2:tablo[i][j]='N';
	    break;
	  case 4:tablo[i][j]='B';
	    break;
	  }
       }
}

void jeu()/*la fonction jeu permet de jouer, tout en prenant compte du nombre d'étape que l'utilisateur veux voir*/
{
   int nb;
   int i,j;
   int etape,a;
   a=0;
   etape=0;
    char mat[T][T];
   initialise(mat);
   printf("Voici le tableau de départ\n");
   affiche(mat);
   printf("\n");
   printf("Combien d'etape de la vie voulez vous voir ?\n");
   scanf("%d",&etape);
   do
     {
       if(etape>0)
	{
	  echange(mat);
	  printf("Voici l'étape  %d de l'evolution de la vie\n",a+1);
	  affiche(mat);
	  sleep(2);
	  a++;
	}
       if(etape<=0)
	{
	  printf("Votre valeur est trop petite, je vous renvois donc le tableau initial.\n");
	  affiche(mat);
	}
     }
   while(a!=etape);
}

void propo()/*la fonction propo donne quelque explications sur le jeu de la vie*/
{
   printf("Le jeu de la vie a été creer par  J.Conway en 1970, ce dernier etait un grand mathématicien.\n");
   printf("Ce jeu a pour but de montrer l'évolution d'une population representé par une case blanche ou une case noire (avec noir et blanc deux populations distincts), en fonction de son entourage.\n");
   printf("L'evolution d'une population est dut a la présence d'un certain nombre de voisins, comme ci ces derniers l'influencaient a changer de peuple.\n");
   printf(" En sachant que les voisins que l'ont prend en compte sont les voisins noirs\n");
   printf("Si une population est en présence de quatre voisins si elle est blanche elle reste blanche,si elle est noire, elle devient blanche.\n");
   printf("Si elle a trois voisins elle ne change pas quelque soit ca couleur initiale.\n");
   printf("Si la population a deux voisins, si elle est blanche ou noire elle devient noire\n");
   printf("Si elle a 1 voisin, il n'y a aucun changement,si elle n'en a pas si elle est blanche elle le reste, si elle est noire elle devient blanche\n");
}
void moi()/*la fonction moi ben elle se rapporte a moi meme :)*/
{
   printf("Je m'appelle AnEk971  et suis en deug MIAS 1ere année");
   printf("Ce fut difficile de venir about de ce programme mais ce fut aussi très passionant\n");
   printf("Merci d'etre venu faire un tour.bye :)\n");
}
int main(void)
{
   int i,j;
   int menu;
   for(i=0;i<3;i++)
     printf("\n");
   printf("                 ====================\n");
   printf("                 I                                      I\n");
   printf("                 I             jeu de la vie        I\n");
   printf("                 I                                      I\n");
   printf("                 ====================\n");
   for(j=0;j<3;j++)
     printf("\n");
   printf("        Bienvenue  au jeu de la vie !\n");
   printf("        Choisir le menu \n");
   printf("          1.Jouer\n");
   printf("          2.A propos du jeu\n");
   printf("          3.Moi meme \n");
   scanf("%d",&menu);
   switch(menu)
     {
     case 1: jeu();
       break;
     case 2:propo();
       break;
     case 3:moi();
       break;
     default:printf("Vous avez voulu jouer le malin en attendant je vous dirrige sur le jeu :) \n");
       jeu();
     }
}

A voir également

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.