Le code correspondant au screenshot (je le poste seulement maintenant parce que j'avais pas encore réinstallé les outils de transferts TI-PC) :
Fichier joint : utopia-gen.tig
La méthode utilisée est un peu bourrin, il y a un programme qui s'appelle utogen() qui génère le programme final utopia() en prenant en paramètre les longueurs de serpent aux différents niveaux, et la longueur de chaque niveau. Par exemple utogen({5,10,18},{2,3,∞}) génère un niveau 1 avec un serpent de longueur 5 qui a besoin de manger 2 pommes pour atteindre le niveau 2, au niveau 2 le serpent est de longueur 10 et a besoin de manger 3 pommes pour atteindre le niveau 3, et au niveau 3 le serpent est de longueur 18 et mange des pommes jusqu'à ce qu'il meure. L'inconvénient de la génération de programme c'est que ça donne un programme final très gros (la taille du programme est grosso modo proportionnelle à la somme des tailles des serpents à chaque niveau), mais c'est le seul moyen que j'ai trouvé pour éviter d'être ralenti par les tableaux, les chaînes, ou les indirections (les indirections sont particulièrement lentes parce que pour gérer les variables spéciales comme xmin le code de tokenisation est appelé systématiquement

).
Là le but était d'être le plus rapide possible sans faire de compromis, mais si on accepte de faire un snake 25% plus lent on peut rajouter des fonctions sympa, par exemple une longueur variable en passant par des tableaux, ce qui permet d'avoir un programme final assez petit, ou encore un joli serpent contigu, arrondi dans les coins, et avec une tête différente du corps (et sachant que le screenshot fait à peu près 13 fps sur HW1, un code 25% plus lent peut quand même atteindre 12 fps sur HW2).
Petite remarque, c'est vraiment très primitif, aucune gestion des vies, aucun niveau avec des obstacles, il manque le code pour supprimer les axes ou nettoyer les variables globales (je n'utilise pas de variables locales parce que ça donnerait un programme tokenisé beaucoup plus gros). Bref comme je l'ai dit c'est pas un jeu mais un simple proof of concept.
Et enfin pour l'aspect légal vous pouvez faire ce que vous voulez du code, considérez que la licence est aussi proche du domaine public que le droit français le permet
