Une fusée est chargée d’effectuer une importante livraison au centre de la nébuleuse d’Eden, située en bas à gauche dans le jeu ci-dessous (origine du repère). Sitôt que le vaisseau est entré dans la nébuleuse verte, une armada vient le prendre en charge et la partie est gagnée. Mais la fusée doit à tout prix éviter les trous noirs qui parsèment le plateau de jeu (en rouge) sinon la fusée, et la partie, sont perdus...
Le mode de déplacement de la fusée est assez étrange dans cette partie de l’univers (dont l’unité de mesure a été choisie de telle manière que les coordonnées x et y de la fusée sont comprises entre 0 et 1) : À chaque poussée du moteur, chacune des coordonnées peut être invariante, ou élevée au carré, ou élevée au cube, ou remplacée par sa racine carrée.
Ci-dessous, la position actuelle de la fusée est le point F, en cyan. La position qu’elle va occuper est représentée par une croix marron. On peut donc estimer l’effet qu’aura le réglage du moteur, lequel se fait par les deux menus déroulants à gauche. Pour effectuer le déplacement, on doit cliquer deux fois sur la case « jouer » (une fois pour la décocher, une deuxième fois pour la cocher à nouveau). Enfin la case en bas à gauche permet, au deuxième clic, de recommencer la partie si on le souhaite.
On constate que le jeu est perfectible : Une fois qu’on est tombé dans un trou noir et qu’on a donc perdu la partie, on peut quand même en ressortir et gagner la partie quand même. Cela s’appelle tricher... Cette faiblesse de l’implémentation est due à ce que le fonctionnement séquentiel du jeu est simulé par des booléens de CaRMetal : Il n’y a pas de langage de programmation ici ! Réaliser une implémentation
- qui empêche le perdant de continuer le partie (système anti-triche)
- qui empêche aussi de traverser un trou noir (dans le cas actuel, seules les positions de départ et d’arrivée doivent être extérieures au trou noir et pas par exemple leur milieu)
est laissé comme exercice au lecteur. C’est d’ailleurs parfaitement faisable avec CaRMetal qui gère plutôt bien les intersections entre segments et disques...
Commentaires