
Game of Life
25 posts
• Page 2 of 3 • 1, 2, 3
Re: Game of Life
Je pense que ça sera simple de faire ça... Tant que L1 ne fait pas planter ma TI 

Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
Re: Game of Life
L'optimisation proposée par Grosged permet de supprimer plusieurs tests et devrait déjà faire gagner du temps.
Tu peux aussi éviter des copies de matrices en utilisant alternativement les matrices [A] et [B] : à une génération, [A] contient la génération en cours et [B] la suivante... et à la génération suivante, c'est le contraire.
- Code: Select all
For(Y,2,9)
For(X,2,17)
[A](Y-1,X-1)+[A](Y-1,X)+[A](Y-1,X+1)+[A](Y,X-1)+[A](Y,X+1)+[A](Y+1,X-1)+[A](Y+1,X)+[A](Y+1,X+1)->S
(S=3) or (S=2)*[A](Y,X->[B](Y,X)
End
End
Tu peux aussi éviter des copies de matrices en utilisant alternativement les matrices [A] et [B] : à une génération, [A] contient la génération en cours et [B] la suivante... et à la génération suivante, c'est le contraire.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Game of Life
Ah, j'avais pas vu son edit 
En effet ça devrait accélérer je vais essayer ça de suite
EDIT : Bizarre, la simulation est mauvaise avec ce code...
EDIT 2 : Il faut prendre en compte la naissance des cellules, soit :
Mais c'est étrange, le programme ne va pas plus vite...
Par contre je ne vois pas comment je pourrais utiliser alternativement les deux matrices ? À moins de dupliquer le code...

En effet ça devrait accélérer je vais essayer ça de suite
EDIT : Bizarre, la simulation est mauvaise avec ce code...
EDIT 2 : Il faut prendre en compte la naissance des cellules, soit :
- Code: Select all
For(Y,2,9)
For(X,2,17)
[A](Y-1,X-1)+[A](Y-1,X)+[A](Y-1,X+1)+[A](Y,X-1)+[A](Y,X+1)+[A](Y+1,X-1)+[A](Y+1,X)+[A](Y+1,X+1)->S
(S=3 and not([A](Y,X)))+(S=3) or (S=2)*[A](Y,X->[B](Y,X)
End
End
Mais c'est étrange, le programme ne va pas plus vite...
Par contre je ne vois pas comment je pourrais utiliser alternativement les deux matrices ? À moins de dupliquer le code...
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
Re: Game of Life
Tu as dû mal recopier, le test
Quand les voisins sont au nombre de 3, nul besoin de prendre en compte la naissance des cellules, car ,avec ou sans cellule au milieu,le résultat sera invariablement le même : cellule au milieu.
Et quand il y a 2 voisins, aucun changement n'est effectué, d'où le
- (S=3) or (S=2)*[A](Y,X->[B](Y,X)
Quand les voisins sont au nombre de 3, nul besoin de prendre en compte la naissance des cellules, car ,avec ou sans cellule au milieu,le résultat sera invariablement le même : cellule au milieu.
Et quand il y a 2 voisins, aucun changement n'est effectué, d'où le
- (S=2)*[A](Y,X->[B](Y,X
-
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)- Posts: 776
- Images: 92
- Joined: 14 Sep 2011, 12:29
- Gender:
- Calculator(s):→ MyCalcs profile
Re: Game of Life
Bon vu que le programme en TI-Basic est pas super rapide (pour ne pas dire carrément lent) j'ai recodé le tout en axe en maintenant le programme fonctionne parfaitement (après quelques... expérimentations
et pas mal de RAM clear aussi
)
Donc, au programme (sans mauvais jeu de mot) :
- Les cellules sont affichées graphiquement (rectangle de 3x3 pixels)
- La grille est redimensionnable depuis l'éditeur (de 1x6 à 20x25), la taille par défaut étant 15x20
- Il est possible de sauvegarder la grille en cours sous n'importe quel nom avec la touche sto-> et de la charger avec ln(
- La simulation peut être effectuée étape par étape avec la touche Math
- Génération d'une grille aléatoire avec ^
- Modification de la vitesse d'exécution avec x et /
Le programme Axe est d'ailleurs bien plus rapide puisque pour une grille de 126 cellules (9x14), là où le TI-Basic mettait 10 secondes pour afficher chaque étape (soit 0.1 FPS), celui-ci affiche 23 images par seconde
.
Pour une grille de 500 cellules on arrive tout de même à du 8 FPS, ce qui est trop rapide pour que l'on puisse vraiment voir une belle animation (pour une fois que le nombre de FPS est trop élevé
). Avec une grille de 6 on arrive à 37 FPS, mais je doute que vous vous en serviez beaucoup 
Pour modifier la vitesse vous pouvez utiliser les touches multiplier x et diviser [b]/[b]. Je mettrais le programme en ligne dès demain.
Par ailleurs si quelqu'un sait comment condenser les données écrite dans les fichiers : j'utilise la liste L1 et mets 0 ou 1 dans chaque case et écrit dans le fichier comme ceci (coucou Hayleia
) :
Pour le reste du programme j'ai optimisé comme j'ai pu, après pas besoin de conditions avec des soustractions au lieu des "=" par exemple vu qu'il s'agit de l'éditeur qui est déjà bien assez rapide. Pour la routine d'affichage et la routine de simulation là par contre j'ai optimisé au maximum (je vous laisserai seuls juges).


Donc, au programme (sans mauvais jeu de mot) :
- Les cellules sont affichées graphiquement (rectangle de 3x3 pixels)
- La grille est redimensionnable depuis l'éditeur (de 1x6 à 20x25), la taille par défaut étant 15x20
- Il est possible de sauvegarder la grille en cours sous n'importe quel nom avec la touche sto-> et de la charger avec ln(
- La simulation peut être effectuée étape par étape avec la touche Math
- Génération d'une grille aléatoire avec ^
- Modification de la vitesse d'exécution avec x et /
Le programme Axe est d'ailleurs bien plus rapide puisque pour une grille de 126 cellules (9x14), là où le TI-Basic mettait 10 secondes pour afficher chaque étape (soit 0.1 FPS), celui-ci affiche 23 images par seconde

Pour une grille de 500 cellules on arrive tout de même à du 8 FPS, ce qui est trop rapide pour que l'on puisse vraiment voir une belle animation (pour une fois que le nombre de FPS est trop élevé


Pour modifier la vitesse vous pouvez utiliser les touches multiplier x et diviser [b]/[b]. Je mettrais le programme en ligne dès demain.
Par ailleurs si quelqu'un sait comment condenser les données écrite dans les fichiers : j'utilise la liste L1 et mets 0 ou 1 dans chaque case et écrit dans le fichier comme ceci (coucou Hayleia

- Code: Select all
ClrHome
Disp "File name ?" // Au passage ce message ne s'affiche pas
input->A
"appv "->D
Copy(A,D+1,8)
UnArchive D // Ne marche pas
GetCalc(D,W*H+3)->P // W = largeur ; H = hauteur ; +3 car le début du fichier contient la largeur la hauteur et la vitesse de simulation
3->C
W->{P+0} // Largeur
H->{P+1} // Hauteur
L->{P+2} // Vitesse de simulation
For(A,0,H-1)
For(B,0,W-1)
{(W+2)*A+B+W+3+L1}->{P+C} // Vu que la liste contient une première ligne et une dernière (idem pour les colonnes) vide...
C++
End
End
Pour le reste du programme j'ai optimisé comme j'ai pu, après pas besoin de conditions avec des soustractions au lieu des "=" par exemple vu qu'il s'agit de l'éditeur qui est déjà bien assez rapide. Pour la routine d'affichage et la routine de simulation là par contre j'ai optimisé au maximum (je vous laisserai seuls juges).
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
Re: Game of Life
Bon alors après le disp, il faut que tu mettes Disp "Ton message",i (le petit i de racine de -1
)
Il ne faut pas que tu stockes le nom de ton appvars dans D mais dans une Str

Il ne faut pas que tu stockes le nom de ton appvars dans D mais dans une Str

-
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 3446
- Images: 75
- Joined: 04 Jul 2014, 14:40
- Location: Clermont-Ferrand 63
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes
- GitHub: Ti64CLi
Re: Game of Life
Mais une Str est une constante non ?
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
-
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 3446
- Images: 75
- Joined: 04 Jul 2014, 14:40
- Location: Clermont-Ferrand 63
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes
- GitHub: Ti64CLi
Re: Game of Life
Et pourquoi pas dans D au fait ? Ça écrit correctement selon le nom qui a été spécifié !
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
Re: Game of Life
J'ai aussi programmé le jeu de la vie sur une grille 10x26 : http://ti-pla.net/a542207
J'ai testé pour une grille 8x16, ça prend environ 7 secondes par génération, déjà plus rapide mais encore très lent
J'ai testé pour une grille 8x16, ça prend environ 7 secondes par génération, déjà plus rapide mais encore très lent

-
RuadhPremium
Niveau 13: CU (Calculateur Universel)- Posts: 38
- Joined: 11 Jan 2016, 23:19
- Gender:
- Calculator(s):→ MyCalcs profile
25 posts
• Page 2 of 3 • 1, 2, 3
Who is online
Users browsing this forum: ClaudeBot [spider] and 7 guests