dridk / estel

simulator of life evolution
1 stars 0 forks source link

LifeEngine remove & indexing #51

Open dridk opened 11 years ago

dridk commented 11 years ago

Attention... Quand on change les positions des lifes.... et bein, l'index change dans l'engine.. vu que index = colum * x + y.. Donc ca risque de vraiment déconner !

ikit commented 11 years ago

Très mauvais ça... de plus ton engine ne doit pas résonner en 2D... Il doit être indépendant de l'environnement choisi pour la simulation.

Ton engine doit se contenter de boucler sur l'ensemble de lifes (donc gérer une liste ou un tableau à 1 dimmension) Et la position de le life c'est la life qui doit la stocker. Ensuite pour les besoins de ton accesseur getLife(x,y), je ferais que la grid view possède un tableau à 2 dim, et que dedans il y stoke juste les pointeurs vers les lifes de la liste de l'engine.

Ainsi quand tu crée une life A, dans l'engine tu ajoute à ta liste ou ton tableau à 1 dim ta life A, et dans le tableau de la grid, tu ajoute le pointeur à la bonne position. Ainsi le getLife(X,Y) pointe sur le bon life et de son côté, ton engine travaille dans son coin sans s'occuper des coordonnées, qui est un aspect de l'environnement (va falloir préparer Gaya ;) )

dridk commented 11 years ago

J'avais fait ca pour avoir un accès rapide au life.. Genre engine.life(x,y) => return mList[x*column + y]. Mais effectivement tu as raison... Maintenant, j'ai peur que ca empiete sur les perf .Parce qu'on devras parcourir la liste , pour trouver x,y.

ikit commented 11 years ago

Rien ne t’empêche de garder un tableau à double entrée pour tes getter, ce tableau à double entrée ne contiendra que les ref vers les objets de ta liste.

Le 22 avril 2013 09:37, sacha schutz notifications@github.com a écrit :

J'avais fait ca pour avoir un accès rapide au life.. Genre engine.life(x,y) => return mList[x*column + y]. Mais effectivement tu as raison... Maintenant, j'ai peur que ca empiete sur les perf .Parce qu'on devras parcourir la liste , pour trouver x,y.

— Reply to this email directly or view it on GitHubhttps://github.com/dridk/estel/issues/51#issuecomment-16760293 .