cs_petifa
Messages postés215Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention10 mars 2014
-
11 oct. 2008 à 13:55
mathdu49
Messages postés5Date d'inscriptionvendredi 13 août 2010StatutMembreDernière intervention 1 juin 2013
-
13 avril 2011 à 17:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
mathdu49
Messages postés5Date d'inscriptionvendredi 13 août 2010StatutMembreDernière intervention 1 juin 2013 13 avril 2011 à 17:23
Bonjour,
Je voulais juste demander comment tu ferai si tu devais rajouter d'autres types de cellules répondant a d'autres lois.
Merci.
EagleUnderscoreOne
Messages postés30Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention24 avril 2009 15 oct. 2008 à 21:03
Okay pour les règles, c'est normal alors :).
Néanmoins pour l'UC, j'en doute... Sais-tu d'où ça vient?
cs_petifa
Messages postés215Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention10 mars 2014 15 oct. 2008 à 00:09
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.
EagleUnderscoreOne
Messages postés30Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention24 avril 2009 14 oct. 2008 à 21:52
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.
tucobouch
Messages postés194Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention 1 mai 200950 14 oct. 2008 à 21:38
Bonjour,
oui effectivement il y avait un prb au démarrage de l'appli... c'est désormais corrigé. Merci
EagleUnderscoreOne
Messages postés30Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention24 avril 2009 14 oct. 2008 à 21:23
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...
cs_petifa
Messages postés215Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention10 mars 2014 11 oct. 2008 à 23:43
OKi, je regarderai a nouveau et plus précisément ton code plus tard, histoire de trouver d'autres choses à améliorer :p
tucobouch
Messages postés194Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention 1 mai 200950 11 oct. 2008 à 23:03
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)
cs_petifa
Messages postés215Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention10 mars 2014 11 oct. 2008 à 21:17
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.
tucobouch
Messages postés194Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention 1 mai 200950 11 oct. 2008 à 20:53
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
cs_petifa
Messages postés215Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention10 mars 2014 11 oct. 2008 à 13:55
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.
13 avril 2011 à 17:23
Je voulais juste demander comment tu ferai si tu devais rajouter d'autres types de cellules répondant a d'autres lois.
Merci.
15 oct. 2008 à 21:03
Néanmoins pour l'UC, j'en doute... Sais-tu d'où ça vient?
15 oct. 2008 à 00:09
14 oct. 2008 à 21:52
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.
14 oct. 2008 à 21:38
oui effectivement il y avait un prb au démarrage de l'appli... c'est désormais corrigé. Merci
14 oct. 2008 à 21:23
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...
11 oct. 2008 à 23:43
11 oct. 2008 à 23:03
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)
11 oct. 2008 à 21:17
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.
11 oct. 2008 à 20:53
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
11 oct. 2008 à 13:55
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