B
Anonyme
Hello đđ»
Jâai rencontrĂ© un problĂšme dans un de mes scripts python derniĂšrement, dans ce script je reproduis le cĂ©lĂšbre jeu de la vie et jâutilise Tkinter pour lâinterface graphique.
Le jeu de la vie (Game of life pour les pros đ):
Tkinter:
Mon script:
Je ne lâai pas avec moi malheureusement, mais voici comment je lâai construit:
Tout dâabord je crĂ©e la fenĂȘtre, le canvas qui contient les cellules et deux listes.
La premiĂšre liste (map) vas contenir les informations de chaque cellules (le monde nâest pas infini ici).
0 pour une cellule morte et 1 pour une cellule vivante.
Ă chaque gĂ©nĂ©ration jâai une fonction qui vas dâabord sauvegarder ma liste actuelle (map) dans une autre, puis vas appliquer les rĂšgles pour chaque cellules en allant voir dans la liste qui cert de sauvegarde les diffĂ©rents Ă©tats et vas changer ou non leur Ă©tat dans la liste map.
AprÚs je vais venir effacer le contenu du canvas (donc toutes les anciennes cellules) et en remettre en regardant avec un index i chaque élément de la liste map.
Si câest 0 alors je dessine un carrĂ© noir sinon un carrĂ© blanc.
Et je crée une boucle avec fen.after(la fonction)
Mon problĂšme:
Le problĂšme câest que au fur et Ă mesure des gĂ©nĂ©rations tout se ralentit, comme si il y avait de lâaccumulation.
On dirait que lâordinateur commence Ă prendre plus de temps Ă calculer.
Ăa viens forcĂ©ment de mon script mais je ne trouve aucun moment qui pourrait crĂ©er une accumulation de tache đ€·đ»ââïž.
Si vous ĂȘtes arrivĂ© jusque lĂ merci dĂ©jĂ , et si vous vous y connaissez un peu avez vous besoin du script ?
Jâai rencontrĂ© un problĂšme dans un de mes scripts python derniĂšrement, dans ce script je reproduis le cĂ©lĂšbre jeu de la vie et jâutilise Tkinter pour lâinterface graphique.
Le jeu de la vie (Game of life pour les pros đ):
On peut dĂ©crire ça comme une simulation de la vie en extrĂȘmement simplifiĂ©e.
LĂ oĂč dans la vie on retrouve une multitude de lois physique et chimique, on trouve ici 3 rĂšgles simple.
Le monde est en deux dimensions et ressemble drÎlement à un plateau de dames infini, seulement chaque case de la grille est appelée une cellule.
Et chaque cellule peut ĂȘtre dans deux Ă©tat, soit morte (case noire) soit vivante (case blanche).
Maintenant les 3 rĂšgles sâappliquent, chaque rĂšgles Ă chaque nouvelle actualisation du jeu (appelĂ© gĂ©nĂ©ration) vas ĂȘtre vĂ©rifiĂ© pour chaque cellules.
Voici les rĂšgles:
Et au fur et Ă mesure que les gĂ©nĂ©rations passent les cellules changent, forment des ensembles de cellules intĂ©ressant tel que les planeurs qui sont une configuration de cellules qui se dĂ©placent Ă lâinfini dans une direction.
VoilĂ jâespĂšre avoir bien expliquĂ© mais je vous invite Ă aller dĂ©couvrir ça.
LĂ oĂč dans la vie on retrouve une multitude de lois physique et chimique, on trouve ici 3 rĂšgles simple.
Le monde est en deux dimensions et ressemble drÎlement à un plateau de dames infini, seulement chaque case de la grille est appelée une cellule.
Et chaque cellule peut ĂȘtre dans deux Ă©tat, soit morte (case noire) soit vivante (case blanche).
Maintenant les 3 rĂšgles sâappliquent, chaque rĂšgles Ă chaque nouvelle actualisation du jeu (appelĂ© gĂ©nĂ©ration) vas ĂȘtre vĂ©rifiĂ© pour chaque cellules.
Voici les rĂšgles:
- Si une cellule morte (case noire) possĂšde exactement trois cellules voisines vivantes elle devient vivante (case blanche).
- Si une cellule vivante possÚde soit 2 soit 3 voisinés vivantes exactement elle le reste vivante.
- Si une cellule vivante possĂšde moins de 2 ou plus de 3 elle meurt
Et au fur et Ă mesure que les gĂ©nĂ©rations passent les cellules changent, forment des ensembles de cellules intĂ©ressant tel que les planeurs qui sont une configuration de cellules qui se dĂ©placent Ă lâinfini dans une direction.
VoilĂ jâespĂšre avoir bien expliquĂ© mais je vous invite Ă aller dĂ©couvrir ça.
Tkinter:
Tkinter est un module python assez vieux mais trĂšs simple dâutilisation qui vas aller demander Ă lâOS de crĂ©er des Ă©lĂ©ments.
Ă ma connaissance des fenĂȘtres, comme lorsque votre ordinateur vous dis quâil reste 10% ou autre message.
LĂ on vas utiliser ce module pour demander Ă lâordinateur de gĂ©nĂ©rer une fenĂȘtre avec les informations quâon lui dit de mettre dedans.
Dans mon code on vas parler de Canvas.
En gros dâaprĂšs mes connaissance il sâagit dâun cadre en quelques sort quâon place dans la fenĂȘtre.
Et ce cadre permet de dessiner par exemples.
VoilĂ je mây connais pas trop alors jâespĂšre que ce que je dis est correct et relativement complet.
Ă ma connaissance des fenĂȘtres, comme lorsque votre ordinateur vous dis quâil reste 10% ou autre message.
LĂ on vas utiliser ce module pour demander Ă lâordinateur de gĂ©nĂ©rer une fenĂȘtre avec les informations quâon lui dit de mettre dedans.
Dans mon code on vas parler de Canvas.
En gros dâaprĂšs mes connaissance il sâagit dâun cadre en quelques sort quâon place dans la fenĂȘtre.
Et ce cadre permet de dessiner par exemples.
VoilĂ je mây connais pas trop alors jâespĂšre que ce que je dis est correct et relativement complet.
Mon script:
Je ne lâai pas avec moi malheureusement, mais voici comment je lâai construit:
Tout dâabord je crĂ©e la fenĂȘtre, le canvas qui contient les cellules et deux listes.
La premiĂšre liste (map) vas contenir les informations de chaque cellules (le monde nâest pas infini ici).
0 pour une cellule morte et 1 pour une cellule vivante.
Ă chaque gĂ©nĂ©ration jâai une fonction qui vas dâabord sauvegarder ma liste actuelle (map) dans une autre, puis vas appliquer les rĂšgles pour chaque cellules en allant voir dans la liste qui cert de sauvegarde les diffĂ©rents Ă©tats et vas changer ou non leur Ă©tat dans la liste map.
AprÚs je vais venir effacer le contenu du canvas (donc toutes les anciennes cellules) et en remettre en regardant avec un index i chaque élément de la liste map.
Si câest 0 alors je dessine un carrĂ© noir sinon un carrĂ© blanc.
Et je crée une boucle avec fen.after(la fonction)
Mon problĂšme:
Le problĂšme câest que au fur et Ă mesure des gĂ©nĂ©rations tout se ralentit, comme si il y avait de lâaccumulation.
On dirait que lâordinateur commence Ă prendre plus de temps Ă calculer.
Ăa viens forcĂ©ment de mon script mais je ne trouve aucun moment qui pourrait crĂ©er une accumulation de tache đ€·đ»ââïž.
Si vous ĂȘtes arrivĂ© jusque lĂ merci dĂ©jĂ , et si vous vous y connaissez un peu avez vous besoin du script ?