Bonjour,
Voilà, j'essaye de programmer un Consway' s Life mais j'ai tout le mal du monde a concevoir le fonctionnement du programme.
Pour le moment, je me suis attaqué a l'interface, voici ce que j'ai fait
une classe MainWin qui herite de JFrame avec
- BoderLayout
- North, South, East, West sont des JPanel classiques. South contient un JButton pour demarrer l'appli.
une classe Cellule avec
- un constructeur minimaliste, avec juste 3 variables
-> int posX;
-> int posY;
-> boolean vivante= false;
- une methode paint qui dessine un rectangle de 5 par 5, couleur rouge ou noire selon que la cellule est vivante ou non
une classe MondeCellule qui herite de JPanel avec un constructeur minimaliste. (rien de declaré pour le moment)
Je mets une instance de MondeCellule dans MainWin.
C'est tout pour le moment car je n'arrive pas a attaquer le probleme.
--------------------------
Apres lecture d'une page: http://www.mines.inpl-nancy.fr/~tiss...t/jeu_vie.html (j'ai prefere ne pas regarder le code) qui dit:
1. une classe pour l'espace, le plan composé de cellules,
2. une classe pour les objets cellules.
Les fonctionnalités du plan, la classe "espace cellulaire" sont de :
* encapsuler le tableau de cellules,
* créer une population initiale, en créant ses objets "cellule",
* faire tourner l'algorithme, c'est à dire boucler sur
1. afficher l'automate,
2. calculer la génération suivante ;
* et de gérer l'attirail technique nécessaire au graphisme en Java et au séquencement des affichages.
Cette classe accède aux cellules par les méthodes correspondant aux fonctionnalités de la classe "cellule" :
* encapsuler les données sur la position géographique de la cellule et son état (occupé ou vide),
* initialiser un objet cellule,
* rendre occupée une cellule qui était vide,
* savoir si une cellule est vide ou occupée,
* calculer l'état à la génération suivante d'une cellule en fonction de son état et de son nombre de voisins,
* mémoriser l'état d'une cellule pour que les calculs de changement de génération se fassent sur l'ancien état des cellules tout en créant le nouveau tableau des états,
* et l'attirail technique pour afficher graphiquement la cellule.
--------------------------
je m'apercois qu'il me faut un tableau bidimensionnel (je ne souhaite pas pour le moment travailler avec des Vector ou LinkedList, etc, etc). Dc oui
pour le tableau bidimensionnel, pas de probleme (enfin pas trop, je pense).
mais j'ai pas mal de questions:
1°: dans ma classe MondeCellule, pour afficher mes cellules, il me faut un LayoutManager??? je pense, oui, dc un simple GridLayout
2°: la methode de recherche proprement dite.
il faut bien qu'une Celllule interroge ses voisines pour savoir si elle doit vivre ou non mais dans une simple grille, y'a t'il differents types de voisines?
je m'explique
les Cellules au centre, ont 8 voisines
celles sur les cotes ont seulement 5 voisines
celles ds les coins ont 3 voisines
en plus suivant ou se situe ma Cellule, les voisines ne sont pas placées au meme endroit
si la Cellule est en bas alors on a:
xxx
x?x
-----
Si la Cellule est en haut c'est le contraire:
-----
x?x
xxx
et ainsi de suite
est ce que je dois faire differentes methodes selon la place qu'occupe une Cellule?
Enfin bref comme vous le voyez, je patauge, je patauge.
Pourriez vous m'indiquer des pistes, des... conseils, je demande pas le code, juste une aide à la conception.
En vous remerciant
areuh
Partager