Jeu de la vie [dev-c++]

Soyez le premier à donner votre avis sur cette source.

Vue 12 523 fois - Téléchargée 1 042 fois

Description

Bon ça s'appelle jeu de la vie mais ce n'est pas un jeu, c'est unes simulation de vie
il y a une matrice avec plusieurs cases (ici 80*23 = 1840 !), avec des cellules un peu partout (les X) une case vide donne naissance a une nouvelle cellule si elle est entoure de exactement 3 autres cellules, et une cellule survit seulement si elle est entouree de 2 ou 3 cellules, sinon elle meurt
Pour pouvoir plus facilement changer la position de depat des cellules, toutes les position sont stockees dans un fichier texte.
Pour que le code suivant ne genere pas d'erreurs, vous devez creer un fichier vie.txt avec les positions des cellules, ou mieux, telecharger le zip, comme ça vous pourrez comprendre plus facilement comment faire le fichier .txt

Source / Exemple :


#include <stdio.h>
#include <conio.c>
#include <fcntl.h>

int main()
{
  int   increment;
  int   increment2;
  int   fichier;
  int   voisin;
  int   mode=1;
  int   etape=0;
  char  touche;
  char  cara[1863];
  char  cases[1840];
  char  provi[1840];

  fichier=open("vie.txt",O_RDONLY);
  if (fichier==-1)
  {
    printf("Impossible d'ouvrir le fichier vie.txt\n");
    printf("Verifiez qu'il est bien dans le meme\n");
    printf("repertoire que l'executable");
    getch();
    return 1;
  }
  read(fichier,cara,1863);
  for (increment=0,increment2=0 ; increment<1840 ; increment++,increment2++)
  {
    if (cara[increment2]=='1') provi[increment]='X';
    else
    {
      if (cara[increment2]=='0') provi[increment]=' ';
      else increment--;
    }
  }
  gotoxy(1,24);
  textcolor(12);
  for (increment=1 ; increment<=80 ; increment++) printf("\xC4");
  do
  {
    textcolor(14);
    for (increment=0 ; increment<1840 ; increment++) cases[increment]=provi[increment];
    gotoxy(1,1);
    for (increment=0 ; increment<1840 ; increment++) printf("%c",cases[increment]);
    for (increment=0 ; increment<1840 ; increment++)
    {
      voisin=0;
      if (cases[increment+1]=='X') voisin++;
      if (cases[increment-1]=='X') voisin++;
      if (cases[increment+80]=='X') voisin++;
      if (cases[increment-80]=='X') voisin++;
      if (cases[increment+81]=='X') voisin++;
      if (cases[increment-81]=='X') voisin++;
      if (cases[increment+79]=='X') voisin++;
      if (cases[increment-79]=='X') voisin++;
      if (voisin==3) provi[increment]='X';
      if ((voisin<2)||(voisin>3)) provi[increment]=' ';
    }
    textcolor(15);
    gotoxy(1,25);
    printf("etape %-6d",etape);
    etape++;
    if (mode==1)
    {
      gotoxy(20,25);
      printf("Faites espace pour mettre en evolution automatique");
      touche=getch();
      if (touche==32) mode=2;
      touche=0;
    }
    else
    {
      if (kbhit()) touche=getch();
      gotoxy(20,25);
      printf("Faites espace pour mettre en evolution manuelle   ");
      if (touche==32) mode=1;
      sleep(50);
    }

  } while (touche!=27);
  return 0;
}

Conclusion :


Voila, je vous conseille de telecharger le zip
j'ai mis a jour cette source quelques heures apres l'avoir mise sur le site, car j'avais oublie de compter les voisins en diagonele. sans ça, les cellules meurent tres vite

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 14 octobre 2009
Statut
Membre
Dernière intervention
28 octobre 2010

Il programma funziona ma bisogna usare conio2!!!!

Installare conio2 dal sito http://devpaks.org/details.php?devpak=16 (prima di procedere a installare conio2 bisogna disinstallare conio.h (nel caso in cui lo abbiate malauguratamente installato!). Io ho dovuto riinstallare brutalmente tutto dev cpp per riuscire a toglierlo).

Aggiungere libconio al linker (vai su progetto->opzioni di progetto-> parametri->linker-> aggiungi libreria (cercare libconio.a
dentro Dev-Cpp/lib/)

Cambiare #include<conio.c> con #include<conio2.h>
e aggiungere #include<windows.h> per poter usare la funzione Sleep (che peraltro si deve scrivere maiuscola---> vai alla linea 78 e scrivi Sleep(50).

Fatto questo, il programma funziona (ma bisogna chiamarlo vie.cpp e non vie.c)
Messages postés
1
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
8 février 2008

Ton programme il ne marche pas! Un conseil, soit sur que tes programmes soient correct avant de les diffuser sur internet
Messages postés
4
Date d'inscription
vendredi 26 avril 2002
Statut
Membre
Dernière intervention
7 novembre 2005

il est où le conio.c ???
Messages postés
85
Date d'inscription
dimanche 10 mars 2002
Statut
Membre
Dernière intervention
17 novembre 2002

je te conseille d'utiliser une matrice à deux dimensions c'est beaucoup plus pratique...
Messages postés
23
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
8 décembre 2008

lol, ca me rappelle un de mes programmes de simulation de vie des fourmies mais en plus complexe ;)
@+

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.