Jeu de la vie en C

Fermé
gaet67 Messages postés 2 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 13 mai 2007 - 13 mai 2007 à 18:21
don_josep Messages postés 22 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 22 août 2011 - 22 août 2011 à 11:25
Bonjour !
J'ai a programmer le jeu de la vie en C et je dois le rendre mercredi et ça fais une semaine que je cherche pourquoi je n'arrive pas a le compiler et voir si il marche ...
J'aimerais savoir si quelqu'un pourrait m'aider svp ...
J'utilise Dev-C++ et quand je compile je recoi comme message :
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status

Le programme que j'ai ecrit est :

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int t1[30][30],t2[30][30];

int tirage()
{
	return rand()%2;
}

void mise_a_zero(int t1[30][30],int t2[30][30])
{
	int i,j;
	for(i=0;i<30;i++)
	{
		for(j=0;i<30;j++)
		{
			t1[i][j]==0;
			t2[i][j]==0;
		}
	}
}

void affichage(int t1[30][30])
{
	int i,j;
	for(i=0;i<30;i++)
	{
		for(j=0;j<30;j++)
		{
		if (t1[i][j]==1)
		{
			printf("X");
		}
		else 
		{
			printf(" ");
		}
	}
}

void nombre_voisin(int t1[30][30],int t2[30][30])
{
	int i,j,nb;
	for(i=0;i<30;i++)
	{
		for(j=0;j<30;j++)
		{
		        if((i==0)&&(j==0))
			{
				nb=t1[i][j+1]+t1[i+1][j+1]+t1[i+1][j];
			}
			else if((i==0)&&(j==29))
			{
				nb=t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j];
			}
			else if((i==29)&&(j==0))
			{
				nb=t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1];
			}
			else if((i==0)&&(j!=0)&&(j!=29))
			{
				nb=t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i+1][j+1]+t1[i][j+1];
			}
			else if((j==0)&&(i!=0)&&(i!=29))
			{
				nb=t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1]+t1[i+1][j+1]+t1[i+1][j];
			}
			else if((i==29)&&(j!=0)&&(j!=29))
			{
				nb=t1[i][j-1]+t1[i-1][j-1]+t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1];
			}
			else if((j==29)&&(i!=0)&&(i!=29))
			{
				nb=t1[i-1][j]+t1[i-1][j-1]+t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j];
			}
			else if((i!=0)&&(i!=29)&&(j!=0)&&(j!=29))
			{
				nb=t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i+1][j-1]+t1[i][j-1]+t1[i-1][j-1];
			}
			if((t1[i][j]==0)&&(nb==3))
			{
				t2[i][j]==1;
			}
			else if((t1[i][j]==1)&&((nb==2)||(nb==3)))
			{
				t2[i][j]==1;
			}
			else if((t1[i][j]==1)&&((nb==1)||(nb==0)||(nb>3)))
			{
				t2[i][j]==0;
			}
		}
	}
}

void echange(int t1[30][30],int t2[30][30])
{
	int i,j,tmp;
	for(i=0;i<30;i++)
	{
		for(j=0;j<30;j++)
		{
			tmp=t1[i][j];
			t1[i][j]=t2[i][j];
			t2[i][j]=tmp;
		}
	}
}

void tempo(int n)
{
	int i,x;
	x=0;
	for(i=0;i<n;i++)
	{
		x=1+i;
	}
}

int testfin(int t1[30][30])
{
     int cpt;
     for(i=0;i<30;i++)
     {
                      for(j=0;j<30;j++)
                      {
                                       if(t1[i][j]==0)
                                       {
                                                      cpt++;
                                       }
                                       else
                                       {
                                           cpt=cpt;
                                       }
                      }
     }
     return cpt;
}

void jouer()
{
     int end;
     end==0;
     mise_a_zero(t1,t2);
     for(i=0;i<30;i++)
     {
                      for(j=0;j<30;j++)
                      {
                            t1[i][j]=tirage();
   		                    if (t1[i][j]==1)
		                        {
			                            printf("X");
	                            }
		                    else 
		                        {
                                        printf(" ");
		                        }
                      }
     }
     do
     {
            nombre_voisin(t1,t2);
            if(t1=t2)
            {
                     printf("\nL'evolution de l'etat des cases est terminee ...\n");
                     end==1;
            }
            else
            {
                if((testfin(t1)==0)||(testfin(t1)==900))
                {
                     printf("L'evolution de l'etat des cases est terminee ...\n");
                     end==1; 
                }
                else
                {
                    end==0;
                }
            }
            affichage(t1);
            echange(t1,t2);
            tempo(100);
     }
     while(end!=1);
}
            
            
	




	
int main()
{
	int a,fin;
	printf("                 -=> Bienvenu dans le jeu de la vie <=-");
	printf("\n\n\n\n\n\n");
	do 
	{
		fin=0;
		printf("                            Que voulez-vous faire?\n\n");
		printf("                      1 - Afficher les regles du jeu\n");
		printf("                                 2 - Jouer\n");
		printf("                                3 - Quitter\n");
		printf("             Entrez le numero qui precede ce que vous souhaitez faire : ");
		scanf("%i",&a);
		printf("\n");
		
		if(a==1)
		{
			printf("Tout d'abord il faut preciser que le jeu de la vie n'est pas vraiment un jeu au sens ludique,\n");
			printf("puisqu'il ne necessite aucun joueur. En fait il s'agit d'un automate cellulaire, un modele \n");
			printf("ou chaque etat conduit mecaniquement a l'etat suivant a partir des regles pre-etablies.\n\n");
			printf("Le jeu se deroule sur une grille a deux dimensions dont les cases peuvent prendre deux \n");
			printf("etats distincts : 'vivantes' ou 'mortes'.\n");
			printf("Les regles sont : \n");
			printf("-> une cellule morte possedant exactement trois voisines vivantes devient elle aussi vivante.\n");
			printf("-> une cellule vivante possedant deux ou trois voisines vivante reste vivante.\n");
			printf("-> dans les autres cas la cellule meurt ou reste a l'etat morte.\n\n");
		}
		else 
		{
			if(a==2)
			{
                     srand(time(NULL));
                     jouer();
			}
			else
			{
				fin==1;
			}
		}
    }
	while (fin=!1);
	return 0;
}
}

A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 837
13 mai 2007 à 18:26
Hum, des variables globales, faut éviter. Sinon t1[i][j]==0; t2[i][j]==0; me choquent. Il faut écrire =0 et non ==0;
Après il y a peut-être d'autres erreurs, à toi de dire.
Bonne chance
4
gaet67 Messages postés 2 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 13 mai 2007 1
13 mai 2007 à 18:43
daccord merci je vais changer ca deja alors !
1
don_josep Messages postés 22 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 22 août 2011 2
22 août 2011 à 11:25
vous avez obtenu le code à la fin?tu peux me lo passer au privée s'il te plait¿¿
mersi
Email: josep.az@hotmail.com
1