Jeu de la vie en C
kratos
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je suis en train de faire un tp en informatique sur le célèbre Jeu de la vie mais je comprend vraiment pas pourquoi elle ne veut pas marcher. En effet la génération de vie suivante ne se fait pas correctement du tout.
Si vous pouvez me donner un peu d'aide merci d'avance.
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
int** initialise (int x)
{int i,j,k;
int **grille = (int**) malloc(sizeof(int*) * x);
int rep;
int l,c;
for (i=0; i<x; i++)
{
grille[i]=(int*)malloc(x*sizeof(int));
}
for (i=0; i<x; i++)
{for (j=0; j<x; j++)
{
grille[i][j]=0;
}
}
printf("Definissez le nombre de cellules en vie: ");
scanf("%i",&rep);
for(k=0; k<rep; k++)
{printf("Saisir la ligne de la cellule entre 0 et %i: ",(x-1));
scanf("%i",&l);
printf("Saisir la colonne de la cellule entre 0 et %i: ",(x-1));
scanf("%i",&c);
grille[l][c]=1;
}
return grille;
}
void affichage (int** grille, int x)
{int l,c;
for(l=0; l<x; l++)
{for(c=0; c<x; c++)
{printf("%i",grille[l][c]);
}
printf("\n");
}
}
int nbvoisins(int **grille,int dim,int x, int y)
{int i,j,nb=0;
for(i=0;i<dim;i++)
{for(j=0;j<dim;j++)
{
if((i==0)&&(j==0))
{
nb=grille[i][j+1]+grille[i+1][j]+grille[i+1][j+1]+grille[i][dim-1]+grille[i+1][dim-1]+grille[dim-1][j]+grille[dim-1][j+1]+grille[dim-1][dim-1];
}
if((i!=0)&&(j!=0)&&(i!=(dim-1))&&(j!=(dim-1)))
{
nb=grille[i-1][j-1]+grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i+1][j+1]+grille[i+1][j]+grille[i+1][j-1]+grille[i][j-1];
}
if((i==0)&&(j!=0)&&(j!=(dim-1)))
{
nb=grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i+1][j+1]+grille[i][j+1]+grille[dim-1][j-1]+grille[dim-1][j]+grille[dim-1][j+1];
}
if((i==0)&&(j==(dim-1)))
{
nb=grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i][0]+grille[i+1][0]+grille[dim-1][0]+grille[dim-1][j]+grille[dim-1][j-1];
}
if((i==(dim-1))&&(j==0))
{
nb=grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i][dim-1]+grille[i-1][dim-1]+grille[0][j]+grille[0][j+1]+grille[0][dim-1];
}
if((i==(dim-1))&&(j!=0)&&(j!=(dim-1)))
{
nb=grille[i][j-1]+grille[i][j+1]+grille[i-1][j-1]+grille[i-1][j]+grille[i-1][j+1]+grille[0][j]+grille[0][j-1]+grille[0][j+1];
}
if((i==(dim-1))&&(j==(dim-1)))
{
nb=grille[i][j-1]+grille[i-1][j-1]+grille[i-1][j]+grille[0][j]+grille[0][j-1]+grille[i][0]+grille[i-1][0]+grille[0][0];
}
if((i!=0)&&(i!=(dim-1))&&(j==0))
{
nb=grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i+1][j+1]+grille[i+1][j]+grille[i][dim-1]+grille[i-1][dim-1]+grille[i+1][dim-1];
}
if((i!=0)&&(i!=(dim-1))&&(j==(dim-1)))
{
nb=grille[i-1][j]+grille[i-1][j-1]+grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i][0]+grille[i-1][0]+grille[i+1][0];
}
}
}
return nb;
}
int** gene_suiv (int** grille, int dim)
{ int** grille_suiv;
int i,j;
grille_suiv =(int **)malloc(dim*sizeof(int *));
for (i=0; i<dim; i++)
{grille_suiv[i]=(int *)malloc(dim*sizeof(int));
}
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{
if (grille[i][j]==1)
{if (nbvoisins(grille,dim,i,j)==2 || nbvoisins(grille,dim,i,j)==3)
{
grille_suiv[i][j]=1;
}
else {}
}
else{
if (nbvoisins(grille,dim,i,j)==3)
{
grille_suiv[i][j]=1;
}
}
}
}
return grille_suiv;
}
void separer_damier (int dim)
{int i;
printf("-");
for (i=0 ;i<(dim*2); i++ )
{printf("-");
}
printf("\n");
}
void affichagetxt_damier (int** grille, int dim)
{int i,j,k;
separer_damier(dim);
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{ printf("|");
if (grille[i][j]==1)
{printf("*");
}
else
{printf(" ");
}
}
printf("|\n");
separer_damier(dim);
}
}
int main()
{int dim; int nb; int cycle; int i;
int** gen_suiv;
int** damier;
printf(" TP7: LE JEU DE LA VIE\n\n");
printf("Saisissez la taille de la grille: ");
scanf("%i",&dim);
printf("Saisissez le nombre de cycle: ");
scanf("%i",&cycle);
damier=initialise(dim);
affichage(damier,dim);
printf("\n\n");
for(i=1; i<=cycle; i++)
{printf("Cycle n%i\n",i);
affichagetxt_damier(damier,dim);
gen_suiv=gene_suiv(damier,dim);
damier=gen_suiv;
printf("\n");
}
return 0;
Si vous pouvez me donner un peu d'aide merci d'avance.
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
int** initialise (int x)
{int i,j,k;
int **grille = (int**) malloc(sizeof(int*) * x);
int rep;
int l,c;
for (i=0; i<x; i++)
{
grille[i]=(int*)malloc(x*sizeof(int));
}
for (i=0; i<x; i++)
{for (j=0; j<x; j++)
{
grille[i][j]=0;
}
}
printf("Definissez le nombre de cellules en vie: ");
scanf("%i",&rep);
for(k=0; k<rep; k++)
{printf("Saisir la ligne de la cellule entre 0 et %i: ",(x-1));
scanf("%i",&l);
printf("Saisir la colonne de la cellule entre 0 et %i: ",(x-1));
scanf("%i",&c);
grille[l][c]=1;
}
return grille;
}
void affichage (int** grille, int x)
{int l,c;
for(l=0; l<x; l++)
{for(c=0; c<x; c++)
{printf("%i",grille[l][c]);
}
printf("\n");
}
}
int nbvoisins(int **grille,int dim,int x, int y)
{int i,j,nb=0;
for(i=0;i<dim;i++)
{for(j=0;j<dim;j++)
{
if((i==0)&&(j==0))
{
nb=grille[i][j+1]+grille[i+1][j]+grille[i+1][j+1]+grille[i][dim-1]+grille[i+1][dim-1]+grille[dim-1][j]+grille[dim-1][j+1]+grille[dim-1][dim-1];
}
if((i!=0)&&(j!=0)&&(i!=(dim-1))&&(j!=(dim-1)))
{
nb=grille[i-1][j-1]+grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i+1][j+1]+grille[i+1][j]+grille[i+1][j-1]+grille[i][j-1];
}
if((i==0)&&(j!=0)&&(j!=(dim-1)))
{
nb=grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i+1][j+1]+grille[i][j+1]+grille[dim-1][j-1]+grille[dim-1][j]+grille[dim-1][j+1];
}
if((i==0)&&(j==(dim-1)))
{
nb=grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i][0]+grille[i+1][0]+grille[dim-1][0]+grille[dim-1][j]+grille[dim-1][j-1];
}
if((i==(dim-1))&&(j==0))
{
nb=grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i][dim-1]+grille[i-1][dim-1]+grille[0][j]+grille[0][j+1]+grille[0][dim-1];
}
if((i==(dim-1))&&(j!=0)&&(j!=(dim-1)))
{
nb=grille[i][j-1]+grille[i][j+1]+grille[i-1][j-1]+grille[i-1][j]+grille[i-1][j+1]+grille[0][j]+grille[0][j-1]+grille[0][j+1];
}
if((i==(dim-1))&&(j==(dim-1)))
{
nb=grille[i][j-1]+grille[i-1][j-1]+grille[i-1][j]+grille[0][j]+grille[0][j-1]+grille[i][0]+grille[i-1][0]+grille[0][0];
}
if((i!=0)&&(i!=(dim-1))&&(j==0))
{
nb=grille[i-1][j]+grille[i-1][j+1]+grille[i][j+1]+grille[i+1][j+1]+grille[i+1][j]+grille[i][dim-1]+grille[i-1][dim-1]+grille[i+1][dim-1];
}
if((i!=0)&&(i!=(dim-1))&&(j==(dim-1)))
{
nb=grille[i-1][j]+grille[i-1][j-1]+grille[i][j-1]+grille[i+1][j-1]+grille[i+1][j]+grille[i][0]+grille[i-1][0]+grille[i+1][0];
}
}
}
return nb;
}
int** gene_suiv (int** grille, int dim)
{ int** grille_suiv;
int i,j;
grille_suiv =(int **)malloc(dim*sizeof(int *));
for (i=0; i<dim; i++)
{grille_suiv[i]=(int *)malloc(dim*sizeof(int));
}
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{
if (grille[i][j]==1)
{if (nbvoisins(grille,dim,i,j)==2 || nbvoisins(grille,dim,i,j)==3)
{
grille_suiv[i][j]=1;
}
else {}
}
else{
if (nbvoisins(grille,dim,i,j)==3)
{
grille_suiv[i][j]=1;
}
}
}
}
return grille_suiv;
}
void separer_damier (int dim)
{int i;
printf("-");
for (i=0 ;i<(dim*2); i++ )
{printf("-");
}
printf("\n");
}
void affichagetxt_damier (int** grille, int dim)
{int i,j,k;
separer_damier(dim);
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{ printf("|");
if (grille[i][j]==1)
{printf("*");
}
else
{printf(" ");
}
}
printf("|\n");
separer_damier(dim);
}
}
int main()
{int dim; int nb; int cycle; int i;
int** gen_suiv;
int** damier;
printf(" TP7: LE JEU DE LA VIE\n\n");
printf("Saisissez la taille de la grille: ");
scanf("%i",&dim);
printf("Saisissez le nombre de cycle: ");
scanf("%i",&cycle);
damier=initialise(dim);
affichage(damier,dim);
printf("\n\n");
for(i=1; i<=cycle; i++)
{printf("Cycle n%i\n",i);
affichagetxt_damier(damier,dim);
gen_suiv=gene_suiv(damier,dim);
damier=gen_suiv;
printf("\n");
}
return 0;
A voir également:
- Jeu de la vie en C
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
- Jeux de moto: jeu de course 3d - Télécharger - Course
2 réponses
reformate ton message, tu aura peut être plus de réponse :
— utilise les baliase de code (juste au dessus de la fenêtre où tu tape le message, il y a des petits boutons, G I S <>... c'est le quatrième) afin de conserver les indentations et donc la lisibilité
— met des commentaires que l'on puisse mieux comprendre.
Je te conseil d'aller voir les nobreux site dédiés au sujet et pour tester ton programme de faire des fixes et des mobiles, des figues simples.
— utilise les baliase de code (juste au dessus de la fenêtre où tu tape le message, il y a des petits boutons, G I S <>... c'est le quatrième) afin de conserver les indentations et donc la lisibilité
— met des commentaires que l'on puisse mieux comprendre.
Je te conseil d'aller voir les nobreux site dédiés au sujet et pour tester ton programme de faire des fixes et des mobiles, des figues simples.