begin process at 2010 03 22 14:44:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > JEU DE LA VIE DE CONWAY

JEU DE LA VIE DE CONWAY


 Information sur la source

Note :
Aucune note
Catégorie :Maths et Algorithmes Classé sous :conway, simulation, cellule, automate Niveau :Débutant Date de création :09/10/2008 Date de mise à jour :14/10/2008 21:37:30 Vu / téléchargé :4 892 / 412

Auteur : tucobouch

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Voici une petite source d'une implémentation du très classique jeu de la vie de Conway !!

Pour faire simple, c'est une simulation de vie cellulaire. Elles sont régies seulement par deux règles :
1)Une cellule vivante meurt si elle a moins de 2 cellules ou plus de 4 cellules voisines vivantes
2)Une cellule morte reviens à la vie si elle a 3 cellules voisines vivantes

Ça parait très bête comme règles mais ça suffit pour créer des schémas très complexes !!! (voir par exemple dans la vidéo YouTube ci-dessous ou dans le lien Wikipedia).

Pour plus de détails, veuillez consulter la wikipédia : http://fr.wikipedia.org/wiki/Jeu_de_la_vie
Une vidéo sous Youtube qui m'a donné envi de coder cet automate : http://www.youtube.com/watch?v=XcuBvj0pw-E

Utilis ation :
-placer des cellules vivantes sur le monde (la grille affichée à l'écran) en cliquant avec le bouton gauche de la souris. On peut supprimer une cellule en cliquant avec le bouton droit de la souris.
-lancer la simulation en cliquant sur démarrer. Se déplacer dans le monde en utilisant les 2 barres de défilement. Changer le zoom en jouant sur l'ascenseur à droite dans la fenêtre
-mettre en pause en cliquant sur Pause
-tuer toutes les cellules en cliquant sur Effacer

La source :
elle est trés simple a comprendre (rien de trop technique), elle respecte le MVC...

Le répertoire src/ contient les sources, bin/ les sources compilées pour Java 6.

Pour compiler, importer le projet dans Eclipse ou bien compiler a la main tous les Java

Pour lancer la source, soit, sous Windows, lancer run.bat soit lancer manuellement la classe org.lifedemo.ui.Launcher dans le répertoire bin/



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   LifeDemo
    • .classpathTélécharger ce fichier [Réservé aux membres club]232 octets
    • .projectTélécharger ce fichier [Réservé aux membres club]384 octets
    • run.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier39 octets
    •   bin
      • java.policy.appletTélécharger ce fichier [Réservé aux membres club]141 octets
      •   org
        •   lifedemo
          •   core
            • Cellule.classTélécharger ce fichier [Réservé aux membres club]496 octets
            • MainPrg$1.classTélécharger ce fichier [Réservé aux membres club]1 218 octets
            • MainPrg.classTélécharger ce fichier [Réservé aux membres club]3 234 octets
            • Monde.classTélécharger ce fichier [Réservé aux membres club]2 453 octets
          •   ui
            • Launcher.classTélécharger ce fichier [Réservé aux membres club]623 octets
            • MainFrame$1.classTélécharger ce fichier [Réservé aux membres club]1 059 octets
            • MainFrame$2.classTélécharger ce fichier [Réservé aux membres club]1 553 octets
            • MainFrame$3.classTélécharger ce fichier [Réservé aux membres club]1 059 octets
            • MainFrame$4.classTélécharger ce fichier [Réservé aux membres club]1 553 octets
            • MainFrame$5.classTélécharger ce fichier [Réservé aux membres club]1 546 octets
            • MainFrame$6.classTélécharger ce fichier [Réservé aux membres club]854 octets
            • MainFrame$7.classTélécharger ce fichier [Réservé aux membres club]851 octets
            • MainFrame$8.classTélécharger ce fichier [Réservé aux membres club]867 octets
            • MainFrame.classTélécharger ce fichier [Réservé aux membres club]3 515 octets
            • MondeComponent.classTélécharger ce fichier [Réservé aux membres club]3 490 octets
            • MondeRenderer.classTélécharger ce fichier [Réservé aux membres club]3 944 octets
    •   src

Télécharger le zip


 Historique

09 octobre 2008 00:32:11 :
maj texte
09 octobre 2008 00:35:23 :
maj
11 octobre 2008 20:55:52 :
suite aux commentaires
11 octobre 2008 23:01:25 :
maj suite aux commentaires
14 octobre 2008 21:37:31 :
pb au démarrage résolu

 Sources du même auteur

Source avec Zip Source avec une capture JWOLFENSTEIN 3D !
Source avec Zip Source avec une capture PAS TOUCHE !!!
Source avec Zip Source avec une capture COLLISIONS EN 2D : AXES SÉPARATEURS
Source avec Zip Source avec une capture MODELE DE RESCORLA WAGNER
Source avec Zip Source avec une capture MINI EVALUATEUR D'EXPRESSION ARITHMÉTIQUES

 Sources de la même categorie

TEST DE PRIMALITÉ OPTIMISÉ par Julien39
Source avec Zip CLASSE MATRICE par frankladen11
Source avec Zip Source avec une capture RÉSOLUTION D'ÉQUATION GRÂCE AU CALCUL DES DÉTERMINANTS par frankladen11
Source avec Zip TYPE DE DONNÉES ABSTRAIT GRAPHE par smutsonberg
Source avec Zip Source avec une capture SIMPLEXE ET DUAL par MrRenaud

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AUTOMATE DESSIN par sadkikamal
SIMULATEUR VIDEO par PCBill
Source avec Zip UNE IMPLEMENTATION DE L'ALGORITHME DE ROUTAGE + UN AFFICHEUR... par mad_charif
Source avec Zip Source avec une capture SIMULATION DE TRAFFIC ROUTIER par MacrOsjIu
Source avec Zip SIMULATION D'UN RÉSEAU ATM (BRASSE DES VP/VC) par villover

Commentaires et avis

Commentaire de petifa le 11/10/2008 13:55:15

Slt tucobouch,
ca m'a l'air cool ton code surtout que le jeu de la vie est assez sympatique comme projet.
Par contre j'ai pas pu executer le programme car il y a des erreurs à la compilation (dues aux @Override):
The method adjustmentValueChanged(AdjustmentEvent) of type new AdjustmentListener(){} must

override a superclass method

pourquoi est-ce que tu n'as pas implémenté ta classe mainFrame avec Component listener
#public class MainFrame extends JFrame implements ComponentListener, AdjustmentListener



Sinon quelques remarques :

monde.java : ligne 88
#public synchronized void tue()
dans cette fonction, tu devrait aussi réinitialiser nbVoisinesVivantes de chaque céllules en le mettant

a 0

monde.java : ligne 107
#return cellules[x][y];
fais attention si x et y ne sont pas valide tu as avoir une exception. Tu devrais mettre :
#if (x >= 0 && x < this.largeur && y >= 0 && y < this.hauteur)
# return cellules[x][y];
#else
# return null;

monde.java : ligne 114
Tu as une variable inutilisée...
#public synchronized void update(double time)

Dans cette fonction tu fais un prétraitement pour compter le nombre de voisins qu'à une cellule,

pourquoi ne pas le faire à la fin de la fonction pour avoir des cellules ayant le bon nombre de voisin.

Dans ton cas si une cellule disparait, les cellules voisines la compte toujours parmis leur voisine.


monde.java : ligne 126
tu créé des variable pour rien ...
#int nb=nbVoisinesVivantes(x,y,c.isEnVie());

monde.java : ligne 183
inutile de créer une variable,
#Cellule c=cellules[xc][yc];
utilise plutot
#if ((cellules[xc][yc]).isEnVie())

cellule.java : Tu devrais mettre un constructeur par défaut.


MainPrg.java : ligne 155, variable non utilisée

Tu aurais aussi pu mettre deux textBox pour spécifier la hauteur et les dimentions et les modifier à sa guise et aussi un bouton pour initialiser aléatoirement la grille plutot que de le mettre en "dur" dans le code.

Sinon code sympa

Commentaire de tucobouch le 11/10/2008 20:53:47

Lol ça c'est de l'analyse précise et pointue :)

En prenant dans l'ordre :
1) Pour les override, mon ami Eclipse me les a mis automatiquement (puis des fois en faisant des copier coller, on les embarques!), l'erreur de compilation dépends apparemment du compilateur : chez moi ça compile! Pour éviter toute erreur : je les ai supprimés!

2) Pour l'implémentation de ComponentListener sur MainFrame : oui en effet on pourrait... mais j'aime bien avoir un listener par composant

3) Pour l'exception possible ligne 107 : il peut en effet y avoir une exception si les index ne sont pas bons. Néanmoins, c'est au code client de tester cette exception pour la gérer (que je n'ai pas fait d'ailleurs!).

4) Pour la mise a jour du nombre de voisines, la valeur nombre de voisines n'est utile que dans la mise a jour des cellules. (Si je déplace le traitement a la fin de la méthode, il faudrait mettre a jour le nombre de voisines lorsqu'on clic sur la grille)

5) Pour finir, l'idée de mettre deux textbox, j'y avais pensé mais par manque de temps je ne l'ai pas fait... (j'ai codé cette appli en 2h...)

Merci

TucoBouch

Commentaire de petifa le 11/10/2008 21:17:01

oki pour tes remarques sauf la numéro 3,
tu devrais tester directement dans les classes c'est plus propre, parce que si tu dois appeler n fois ces fonctions tu devras faire autant de fois les tests.

Après pour la mise à jour des nombre je trouve plus logique qu'ils soient mis à jour en même temps que les valeurs des cellules vivantes, sinon les valeurs ne devraient pas être misent dans les cellules.

Commentaire de tucobouch le 11/10/2008 23:03:36

Je prends note...
j'ai modifié la source :
-test des bornes dans getCellule
-le nombre de voisines n'est plus stocké dans la cellule (n'a rien à faire là car on s'en sert que pour la mise a jour des cellules)

Commentaire de petifa le 11/10/2008 23:43:39

OKi, je regarderai a nouveau et plus précisément ton code plus tard, histoire de trouver d'autres choses à améliorer :p

Commentaire de EagleUnderscoreOne le 14/10/2008 21:23:13

Salut,

Bonne idée le jeu de la vie en Java. J'ai une question, surement à la con, quand je lance le run.bat, j'ai une Exeption, "le jeu est déjà démarré". Je suis allé voir dans le code, et il faudrait que le constructeur soit lancé deux fois, je ne comprends pas trop...

Commentaire de tucobouch le 14/10/2008 21:38:39

Bonjour,
oui effectivement il y avait un prb au démarrage de l'appli... c'est désormais corrigé. Merci

Commentaire de EagleUnderscoreOne le 14/10/2008 21:52:36

Okay, merci, ça marche !
Il y a quand même un petit souci, ça me prend 70% de l'UC, en permanence...
Et je ne sais pas si c'est normal, mais quand trois cellules se retrouvent alignées, ça se met à osciller : 3 horizontales puis 3 verticales etc. Tout dépend de l'ordre dans lequel tu appliques les règles après.

Commentaire de petifa le 15/10/2008 00:09:01

il n'y a pas d'ordre pour appliquer les règles, a un moment donnée toutes les cellules appliquent les règles, c'est pour ça que le nombre de voisin est calculé avant de changer l'étant d'une cellule. Une fois que les voisins des cellules sont comptés on change les états.

Commentaire de EagleUnderscoreOne le 15/10/2008 21:03:36

Okay pour les règles, c'est normal alors :).

Néanmoins pour l'UC, j'en doute... Sais-tu d'où ça vient?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Passer a la cellule de droite dans une JTable [ par chmurbluk ] Dans une JTable, apres la validation d'une cellule en edition par la touche Enter, la nouvelle cellule selectionnee est la cellule du dessous alors qu Parametrer taille maximum d'une JList [ par jonathan100 ] Bonjour a tous ,Je n'arrive pas a trouver les codes me permettant de centrer et de parametrer la taille de mon composant JList. Ce sont des parametres simulation de la circulation d'une trame dans un réseau [ par kenmeue ] Salut à toi! stp est ce que tu peux m'aider un peu sur java? je souhaite faire la simulation de la circulation d'une trame dans un réseau. SIMULATION EN 3D D'UN FLUX URBAIN [ par amjad22 ] Je veux réaliser une simulation en 3D d'un flux urbain, où on verrait les voitures se déplacer sur des routes avec des immeubles prédéfinis par l'util Mettre en couleur la cellule selectionnee d'une JTable [ par kobee12 ] Salut a tous.J'aimerais pouvoir mettre en couleur la cellule que je selectionne en cliquant(par exemple le contour de la cellule en rouge).Je n'arrive Recuperer les donnees de la cellule editee apres avoir change le contenu [ par kobee12 ] Salut!J'ai cree un tableau qui est rempli a partir d'une requete.J'aimerai pouvoir mettre a jour ma BDD quand je change le contenu d'une cellule apres mouseEntered sur une cellule de JTable [ par jguillemette ] bonjourj'aimerais savoir comment récupérer la cellule d'une JTable sur laquelle se trouve la souris (un genre de mouseEntered sur une cellule)mercijer Simulation en VB de la Gestion des feux de deux carrefours [ par bambino2003 ] Bonjour Mes Trés chers ami(e)s ,Je suis trés débutant en VB ( je n'ai jamais etudié VB ) et j'ai besoin beaucoup d'aide en Visual Basic VB. En fait, p couleur de cellule dans une JTable [ par javateux ] bonjour, voila mn probleme:j veu colorer des cellules selectionnées dans une table et les garder en couleur, existe-t-il des proprietés pour la table cellule JTable [ par javateux ] salut,Comment peut-on colorer des cellules dans une JTable a partir d'une selection de celle-ci?En fait je voudrai garder cette coloration (donc pas s


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales