• # grmf

    Posté par . En réponse au message Jeu de la vie. Évalué à 2.

    Bon, comme le commentaire deja posté sur l'autre site, j'ai un peu de mal à lire le code...

    Deja, ton .h définit un enum pour INVALID = -1, DEAD = 0, ALIVE,.... alors utilise ces noms symboliques au lieu de remettre les valeurs numériques dans tes switch/case et dans tes affectations de nouvelles cellules, ce sera beaucoup plus clair.

    Ensuite, et je pense que ton bug vient de là, il me semble que tu intervertis les lignes et les colonnes... en général, on utilise i=x=colonne=1ere coordonnée, et j=y=ligne=2eme coordonnée. Mais tu fais boucler i sur les colonnes, et j sur les lignes. Donc tu accède ensuite à ton tableau "de travers".

    Tu as bien mis un début de vérification des parametres dans CellVoisin() (if (haut == world->line)); rajoutes avant un if (haut > world->line) et sors de ton programme en erreur explicite dans ce cas, pour vérifier. Tu pourras alors corriger si c'est bien ça.

    (Sinon, en plus de valgrind, tu peux lancer ton programme sous débugueur gdb/ddd, tu verras exactement la ligne qui plante et le contenu des variables)