********************************************************




par François LEIBER

http://leiber.free.fr


Description


Le célèbre Jeu de la Vie de Conway pour la Ti-89, 92+ et V200, plein de fonctions, joli et optimisé en vitesse.
Vie est programmé en C et assembleur, et compilé avec TI-GCC.


Version 1.1, 05 / 04 / 2004
Copyright 2000-2004 par François LEIBER

Ce programme est distribué sous licence GPL, reportez-vous au fichier GPL.txt ou à http://www.gnu.org/licenses/licenses.fr.html#GPL pour en savoir plus.

Sommaire


  1. Introduction
  2. Nécessite
  3. Fonctionnalités
  4. Touches
  5. Historique
  6. Remerciements
  7. Infos

Introduction


Principe :

Si on l'appelle le Jeu de la Vie, c'est parce qu'on imagine que chaque pixel représente une cellule, coincée dans une case. Chaque cellule est entourée de huit voisines, toutes dans leur case. Si une cellule a moins de deux voisines, elle meurt de solitude ; si elle en a plus de trois, alors elle meurt d'étouffement ; enfin, si une case vide se retrouve entourée d'exactement trois cellules, une nouvelle cellule y naît. Cette règle s'appelle donc 23/3 : c'est la plus célèbre, celle qui a été étudiée par Conway qui a proposé ce jeu en 1970, et qui est aujourd'hui de loin la plus connue et la plus étudiée. Mais vous pouvez en changer, chacune a des propriétés particulières.

Bouclage du terrain :

Pour ne pas être gêné par les extrémités du terrain, on considère qu'il est bouclé : la ligne supérieure est accolée à la ligne inférieure, et même chose pour les colonnes. D'ailleurs, si vous y regardez de près, vous verrez que les deux lignes supérieures sont exactement identiques aux deux inférieures, idem pour les colonnes, c'est tout simplement pour accélérer les calculs (je lis directement dans la mémoire vidéo).

Intérêt :

Ce qu'il faut comprendre, c'est qu'inévitablement la taille du terrain (maximum : 160x124) limite ce que l'on peut faire avec ce programme. Mais bon, c'est largement suffisant pour se familiariser avec ce jeu, et faire pas mal de choses :

- Tout d'abord, vous pouvez commencer avec un terrain aléatoire, et voir les cellules vivre et mourir, tester différentes règles et voir comment elles influencent le jeu (exemple d'une autre règle à droite).

- L'étape suivante, lorsque vous comprendrez suffisamment le principe, est d'essayer les motifs qui sont fournis avec Vie dans le fichier Motifs.89y. Au passage, je vous conseille à ce moment de diminuer la vitesse du jeu (menu options) pour avoir le temps de voir quelque chose. Les motifs peuvent à mon avis être rangés en 4 catégories :

  • Ceux qui sont juste jolis, sans rien de particulier.
  • Ceux qui sont périodiques (dans la description de chaque motifs, p5 indique que le motif se répète toutes les 5 générations).
  • Ceux qui se déplacent (les vaisseaux). Leur vitesse de déplacement est par exemple 2c/5, ce qui signifie qu'ils avancent de 2 cases toutes les 5 générations (ils avancent à 2/5 de la vitesse maximale qui est d'une case par génération, notée c comme celle de la lumière).
  • Ceux qui 'émettent' des vaisseaux, appelés des fusils. Ils envoient périodiquement un vaisseau (la plupart du temps un glisseur, le plus basique des vaisseaux) dans une direction donnée. Le problème ici, c'est que comme le terrain est bouclé, on a tendance à se reprendre les tirs dans la figure au bout d'un certain temps (cf image à droite :)

- Enfin, dernière étape : essayer de créer soi-même des motifs avec des propriétés particulières, de découvrir de nouveaux vaisseaux, fusils, oscillateurs, etc. Par exemple, on ne connaît toujours pas des oscillateurs avec certaines périodes, comme 19. Sachez que sur Internet, il existe pas mal de concours pour ceux qui veulent trouver ce genre de trucs...

- Vous pourrez trouver de nombreuses autres informations, exemples et résultats de recherche en cherchant un peu sur Internet !

Nécessite


  • Une Ti-89, une 92+ ou une Voyager 200, avec n'importe quel hardware et n'importe quelle ROM.
    Mon programme est en mode nostub, c'est à dire qu'il ne nécessite pas de kernel installé.

  • Le programme vie() et le fichier viedata (données compressées avec la technologie ExePack de la TIGCC Tools Suit), 16.7 Ko en tout.

  • Le fichier motifs.fLIF si vous voulez pouvoir charger des motifs.

  • Quelques kilo-octets de libre pour pouvoir lancer le jeu :)

Vous pouvez mettre les fichiers dans n'importe quel répertoire, je vous conseille de les archiver pour sauver de la place en RAM. Vous devez lancer vie() à partir de ce dossier.

Fonctionnalités

  • Un terrain de 160x124 ou de 96x96, bouclé dans toutes les directions.
  • Possibilité de changer les règles, de très nombreuses sont déjà incluses avec des commentaires.
  • Possibilité d'éditer le terrain de manière complète.
  • Possibilité de charger des images ou de sauvegarder sous forme d'image une partie quelconque du terrain.
  • Possibilité de charger des motifs, fournis avec leur descriptifs ; possibilité de créer de nouveaux fichiers de motifs, grâce à l'utilitaire Convertisseur fourni.
  • Pleins d'autres choses, à découvrir de manière intuitive dans des menus très pratiques (enfin d'après moi :-).


Touches

  • ON pour accéder au menu.
  • ENTER ou 2ND pour sélectionner un élément du menu.
  • ESC pour sortir du menu ou de la fonction courante, et sortir du jeu quand vous êtes dans le menu principal.
  • +/- pour changer le contraste.
  • Toutes les autres touches sont indiquées quand vous en avez besoin.


Historique


v1.1 - 05/04/04 - 15 085 octets (25 Ko non compressé)

  • Compilation avec TI-GCC 0.95 bêta 6.
  • Traduction en des règles et des descriptions des motifs en français, et de tout le reste en anglais.
  • Reformatage de la documentation.
  • Maintenant distribué sous licence GPL !


v1.01 - 27/07/02 - 15 191 octets (25 Ko non compressé)

  • Compilation avec TI-GCC 0.94 bêta 18, ajout des directives de compilation NO_CALC_DETECT et NO_AMS_CHECK pour gagner de la place.
  • Pas mal de petites améliorations de code suggérées par Lionel Debroux, ainsi que sa version personnalisée de sprintf pour accélérer.
  • Test avec la nouvelle calculatrice Voyager 200, aucun problème détecté.


v1.00 - 27/06/01 - 14 758 octets (24 Ko non compressé)

  • Première version distribuée ailleurs que sur mon site.
  • J'ai supprimé l'astuce d'accélération de la version précédente, mais pour la remplacer par une autre à l'efficacité dramatique dès qu'il y a des lignes vides : pour un terrain vide, les générations se comptent maintenant en centaines par seconde, même sur un grand terrain, et le ralentissement sur un terrain chargé est faible.
  • Possibilité de régler la vitesse.
  • Comme la routine d'affichage de sprites du TIOS est buggée, j'en ai reprogrammé une moi-même, ce qui me permet au passage de boucler les images ou les motifs lorsque vous choisissez où les afficher (si vous regardez le source, vous verrez à quel point c'est bourrin).
  • Plus de motifs dans Motifs.fLIF (maintenant 9,5 Ko).
  • Comme toujours, quelques corrections de bugs. Les générations sont remises à zéro dès que vous modifiez le terrain.


v0.90 - 13/06/01 - 14 032 octets (23 Ko non compressé)

  • Une fenêtre 'A propos'.
  • Il y a un effet de clignotement 'à la Othello II' à chaque fois que l'on change de menu.
  • Accélération du moteur, surtout pour un terrain vide : malgré les ralentissements des dernières versions, 42 générations par seconde sur une HW2 pour un terrain vide...
  • Correction de plusieurs bugs.


v0.80 - 07/06/01 - 13 297 octets (22 Ko non compressé)

  • Nouveau menu d'options, permettant pour le moment seulement de changer la taille du terrain : vous pouvez maintenant utiliser un terrain 160x124, idéal sur une 92+. Vous ne pourrez pas le voir en entier avec une 89, mais vu que vous pouvez faire défiler le terrain dans le menu 'Editer', ce n'est pas grave. J'ai dû faire des grosses magouilles pour permettre la coexistence de deux tailles de terrain, mais j'espère n'avoir rien ralenti...
  • Correction de l'autorepeat, qui se déclenche au bon moment même si une autre touche est appuyée.
  • Quelques détails de réglés.


v0.70 - 02/06/01 - 12 589 octets (20 Ko non compressé)

  • Possibilité d'éditer des règles personnalisées.
  • J'ai souffert comme vous ne pouvez pas imaginer (mais quand même pas autant que quand je l'avais fait en BASIC, surtout que ça avait planté alors qu'il n'était pas archivé...), mais j'ai finalement fait le convertisseur pour créer des fichiers de motifs (lisez le Lisez-moi dans le répertoire Convertisseur). J'en ai tapé quelques-uns à la main, mais le fichier sera bientôt plus gros.
  • Fourni avec une version 92+.
  • Maintenant compressé avec la technologie ExePack : je gagne 8 Ko, et il n'y a plus besoin d'avoir un kernel installé, même sur les ROM 2.xx (le launcher fait 1.5 Ko).


v0.60 - 30/05/01 - 20 197 octets

  • Possibilité de 'scroller' l'image à partir du menu 'Editer'.
  • Amélioration du défilement dans les menus, et le curseur se replace automatiquement sur la règle sélectionnée précédemment.
  • J'ai baissé le délai avant et pendant la répétition automatique des touches (j'espère que ce n'est pas trop rapide maintenant).
  • Amélioré la gestion des motifs (même si le fichier n'est toujours pas disponible).
  • Accéléré le moteur, puis ralentit (pas mal malheureusement) pour qu'il fonctionne vraiment avec toutes les règles (problème avec les naissances 1 ou 2).


v0.50 - 22/05/01 - 19 529 octets

J'ai programmé de manière assez linéaire plein de beaux menus très évolués, mais bon, le code source n'est pas prévu pour être facilement mis à jour... Tout est opérationnel (il suffit de regarder l'explosion de la place en mémoire), mis à part quelques petites mises au point, et il me reste à fournir un fichier contenant des motifs. J'ai mis différentes règles avec leur description, tirées du jeu Life32 par Johan G. Bontes.


v0.40 - 15/05/01 - 8 673 octets

Bon, allez, maintenant que le plus dur est fait, j'ai créé rapidement une interface avec des zolies nimages et plein d'options. Il n'en reste plus que quelques-unes à terminer, et ce sera tout beau tout joli :-)


v0.31 - 15/05/01 - 1 400 octets

Hé hé, qui a dit que j'étais un incapable ? 32 générations par seconde pour un terrain classique, c'est vraiment bien l'assembleur quand même... T&T enfoncé !


v0.30 - 14/05/01 - 2 500 octets

Une seule solution pour répondre au défi de T&T : l'assembleur. Je l'ai donc appris, et refait le moteur du programme : deux fois plus lent qu'avant. Mais c'est vrai que je n'ai pas vraiment fait dans la finesse...


v0.23 - 05/05/01 - 1 693 octets

Le terrain ne commence pas plein, ça fait plus joli. Accélération, surtout quand le terrain est vide (mais pas trop quand il est plein) : 31 générations par seconde sur une HW2.


v0.22 - 29/03/01 - 1 717 octets

Accélération du moteur d'environ 20 % avec quelques astuces supplémentaires. Exemple : 18 générations par seconde sur une HW1 quand le terrain est vide.


v0.21 - 28/02/01 - 1 749 octets

En testant la nouvelle bêta de TIGCC, j'ai rouvert le source de ce petit programme sympathique. J'ai nettoyé le source, changé quelques lignes, et compilé avec la nouvelle version du compilateur.


v0.2 - 28/10/00 - 1 783 octets

Très nette accélération du compteur : plus de 6 boucles par seconde pour un terrain pas trop chargé. Je ne compte plus la population, tout d'abord parce que pour une raison très obscure, ça s'est arrêté de marcher au cours d'une de mes modifications du programme, mais de toute façon ce n'était plus très pratique avec mon nouveau moteur.


v0.1 - 21/10/00 - 1 700 octets

Pas de menu ni de beaux graphismes : le moteur tourne bien, affichage de la génération et de la population.


Remerciements

  • Un immense merci à toute l'équipe TIGCC, et en particulier Zeljko Juric pour ses librairies et sa documentation très complète des fonctions du TIOS, sans lesquelles tout ceci n'aurait absolument pas été possible.

  • Johan G. Bontes pour Life32, que je vous conseille afin de voir ce que rend le Jeu de la Vie sur ordinateur, c'est incomparable...

  • Alan Hensel pour sa collection très complète de motifs, dont sont tirés ceux fournis avec Vie.

  • Lionel Debroux pour ses conseils d'optimisation.

  • Une mention spéciale à Tim Pope, pour son Conway's Game of Life sur TI-89, le premier à ma connaissance, et son Readme sympa.

  • Merci à TATMF pour l'image d'introduction.

  • Une mention encore plus spéciale à T&T, qui m'a stimulé pour que j'accélère le moteur du programme...


Infos

Pour toute suggestion, commentaire ou découverte d'erreurs non prévues (ce qui paraît incroyable ;-) ), vous pouvez me joindre à :

francois.leiber@laposte.net

Toute idée sera la bienvenue !

Toutes les mises à jour de mes programmes sont disponibles en avant-première sur mon site

http://leiber.free.fr/

J'encourage chaleureusement tous ceux qui voudraient se mettre au C mais qui hésitent, c'est pourquoi le Jeu de la Vie est open-source ! Il est en effet maintenant fourni sour licence GPL, ce qui signifie entre autres que vous avez le droit de le modifier et de le distribuer une fois modifié, du moment que vous respectez les clauses de la licence (fournie avec le programme).


Retour au sommet de la page