Jeu de la vie version université de fouillole

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 001 fois - Téléchargée 29 fois

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

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
4 juin 2008

Bonjour.
j'ai tester ton programme dans le cadre d'un projet et j'ai rencontré l'erreue "Expression: stream !=NULL"
peux tu me dire s'il te plait comment t'as régler ce problème je programme sur windows xp professionnel en c++.
merci et je te donne une note de 8/10 car ton programme est assez claire pour quelqu'un comme moi qui suit assez faible en programmation
Messages postés
3
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
26 août 2005

Bon maintenant ca fonctionne j'ai résolu mon problème. Mais bon j'ai encore un soucis. Je peu lancer le jeux en n'importe quel nombre d'étape, le tableau retourne la valeur "B" pour chaque case dès la premiere étape.
Messages postés
3
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
26 août 2005

Hello.

j'ai un petit soucis. J'ai réussi a corrigé les erreurs et je n'ai plus que le warning donc il se lance. Mais qd je veux lancer le jeux, il me fait une erreur " Expression: stream != NULL "

C'est un problème lié a la création de fichier je pense.

Pouvez vous m'aider?
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008

Merci pour les aides, ben heu le c++ pour moi c pas tout de suite je débute en C, le C parceke je suis a l'université et c'est ce qu'on nous apprend le c++ c pas avt la license :'(.
Sinon c vrai j'ai mis un FILE*f a la fonction affiche alors ke ca sert pas je viens de voir ca, sinon moi j'utilise linux, l'editeur emacs et le compilateur gcc.
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Des fonction int qui ne retourne rien ?? c'est quoi ton compilateur?
Il y a aussi un pointeur F qui ne sert a rien .. sinon a la place du sleep fais plus interessant : quand on clique sur une touche on continue ce qui parais plus logique !
Bonne continuation ^^
Afficher les 9 commentaires

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.