Help Urgent sur un programme en C

Tunners

Nouveau membre
Bonjour,

Alors voilà j'ai à faire le fameux Jeu de la Vie en C et je dois le rendre vendredi.
Non je ne viens pas vous demander de faire mes devoirs mais juste un peu d'aide je pense avoir presque finit mais mon programme ne marche pas (ya encore quelques soucis et questions que je me pose dessus).
Si quelqu'un l'ayant déjà fait, ou qui maitrise bien le C veuille bien m'aider ce serait très sympas.

Voici le programme :

[cpp]
#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>

#include <unistd.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;j<30;j++)
{
t1[j]=0;
t2[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[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[j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i+29][j]+t1[i+29][j+1]+t1[j+29]+t1[i+1][j+29]+t1[i+29][j+29];
}
else if((i==0) && (j==29))
{
nb=t1[j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i+29][j+29]+t1[i+29][j-1]+t1[j-29]+t1[i+1][j-29]+t1[i+29][j-29];
}
else if((i==29) && (j==0))
{
nb=t1[i-1][j]+t1[i-1][j+1]+t1[j+1]+t1[i-29][j]+t1[i-29][j+1]+t1[j+29]+t1[i-1][j+29]+t1[i-29][j+29];
}
else if((i==29) && (j==29))
{
nb=t1[j-1]+t1[i-1][j]+t1[i-1][j-1]+t1[j-29]+t1[i-1][j-29]+t1[i-29][j]+t1[i-29][j-1]+t1[i-29][j-29];
}
else if((i==0) && (j!=0) && (j!=29))
{
nb=t1[j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i+1][j+1]+t1[j+1]+t1[i+29][j-1]+t1[i+29][j]+t1[i+29][j+1];
}
else if((j==0) && (i!=0) && (i!=29))
{
nb=t1[i-1][j]+t1[i-1][j+1]+t1[j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i-1][j+29]+t1[j+29]+t1[i+1][j+29];
}
else if((i==29) && (j!=0) && (j!=29))
{
nb=t1[j-1]+t1[i-1][j-1]+t1[i-1][j]+t1[i-1][j+1]+t1[j+1]+t1[i-29][j-1]+t1[i-29][j]+t1[i-29][j+1];
}
else if((j==29) && (i!=0) && (i!=29))
{
nb=t1[i-1][j]+t1[i-1][j-1]+t1[j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i-1][j-29]+t1[j-29]+t1[i+1][j-29];
}
else if((i!=0) && (i!=29) && (j!=0) && (j!=29))
{
nb=t1[i-1][j]+t1[i-1][j+1]+t1[j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i+1][j-1]+t1[j-1]+t1[i-1][j-1];
}
if((t1[j]==0) && (nb==3))
{
t2[j]=1;
}
else if((t1[j]==1) && ((nb==2) || (nb==3)))
{
t2[j]=1;
}
else if((t1[j]==1) && ((nb==1) || (nb==0) || (nb>3)))
{
t2[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[j];
t1[j]=t2[j];
t2[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 i, j, cpt;
for(i=0;i<30;i++)
{
for(j=0;j<30;j++)
{
if(t1[j]==0)
{
cpt++;
}
else
{
cpt=cpt;
}
}
}
return cpt;
}

void jouer()
{
int i, j, end;
end=0;
mise_a_zero(t1,t2);
for(i=0;i<30;i++)
{
for(j=0;j<30;j++)
{
t1[j]=tirage();
if (t1[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(void)
{
int a,fin;
printf(" -=> Bienvenu dans le jeu de la vie <=-");
printf("\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)
{
initscr();
noecho();
move(0,0);
refresh();
srand(time(NULL));
jouer();
endwin();
}
else
{
fin=1;
}
}
}
while (fin=!1);
return (0);
}

[/cpp]


Soyez indulgents c'est mon premier "vrai" programme donc si c'est pas très joli, mal fait etc, n'en tenez pas vraiment compte.

Merci d'avance
 

Tunners

Nouveau membre
Bah il marche pas donc j'aimerais savoir pourquoi, et si possible de l'aide pour le terminer :x
J'ai déjà noté une erreur dans le mise_a_zero.
 

mikebzh

Nouveau membre
Salut
:non: , c'est pas bien de faire un gros copier coller sur un programme trouver sur le net, mais après tout c'est comme cela que l'on progresse, encore faut-il comprendre ce que l'on trouve :) (tu n'as même pas changer le texte de démarrage d'un programme posté sur un forum en 2007).
Je vais déjà t'éclairer sur un point, reprends tes premiers cours de C, tu te sers de variables globales ligne 9, après tu les utilises en arguments de fonction (mêmes si elles portent le mêmes noms, elles ne représenteront jamais les mêmes variables) et puis pointeurs, adresses tu connais car pour passer des tableaux en paramètres cela peut aider.
Enfin bon courage, il te reste deux jours, présentes-nous quelque chose de ta composition, on t'aidera, on est pas des bêtes :hello:

Ps : c'est pas la peine de poster le "prog" sur tous les forums, en plus tu gardes le même pseudo ;)

Ps2 : les variables globales, cela n'a jamais vraiment été jojo, mais acceptables pour débuter.
 

Tunners

Nouveau membre
Bon alors, pour le texte de démarrage c'est le même dans tout les projets c'est d'ailleurs comme ca que j'ai trouvé le programme sur internet. Et si tu regarde bien j'ai beaucoup modifié l'algo a ma façon. Donc ok j'ai pompé une grosse partie du programme mais je l'ai compris et sans l'algo le programme est inutile le reste c'est que des futilités que j'aurais pu trouver moi même.
Donc au lieu de donner des leçons t'aurais pu simplement m'aider ou ne rien dire.
Et oui c'est la peine de poster sur tout les forums parceque je n'ai eu que de l'aide sur un seul et si je ne l'avais pas fait je n'aurais jamais terminé mon programme.
On est vendredi et donc aujourd'hui c'est terminé donc j'pense que ton aide j'en ai plus besoin et je pense que t'aurais même pu te passer de poster a 4h du mat.
Et sache que ce genre de commentaire quand on est en situation d'urgence (bon ya pas mort d'hommes non plus) mais n'aide pas du tout au contraire me pousse a ne plus jamais poster et demander de l'aide sur un forum par peur de ne pas me faire aider et de me faire donner des lecons pars des gens comme toi.
Ps: j'ai presque complétement fini mon programme (d'ailleurs si tu le verrais, il n'a plus rien à voir avec celui d'avant, même l'algo je l'ai définit d'une autre manière comme quoi c'était pas du pompage mais de l'inspiration, un truc pour démarrer) grace a l'aide de gens sympas que je remercie.
Sur ce, a bon entendeur, peut etre à un jour.
Tchuss
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 000
Membres
1 586 387
Dernier membre
ouistititouille
Partager cette page
Haut