Voici la présentation de Explore Escape, une participation en équipe à notre concours de programmation Python 2024-2025 :
- le jeu a initialement été conçu pour NumWorks par Vincent Robert alias cent20, enseignant de Mathématiques et NSI au Lycée Louis Pasteur en Avignon
- puis porté pour Graph Math+ par R0baiyn, un de ses anciens élèves
- et enfin porté pour TI-Nspire CX II par ilyas.r , un autre de ses anciens élèves
Le jeu original de cent20 exploite la bibliothèque graphique kandinsky. Il s'articule autour de la carte d'un donjon dans lequel tu contrôles un petit carré bleu souriant à l'aide des touches fléchées.
Le donjon comporte 42 salles faisant chacune 32×20 cases, et tu démarres ton aventure avec 3 points de vie dans la 1ère salle constituant le niveau 1.
Dans chaque salle dans laquelle tu entres par la gauche, il te faut trouver la sortie, forcément située sur un des bords. Mais plusieurs péripéties t'attendent :


Pour affronter cette difficulté, tu disposeras fort heureusement de plusieurs alliés sur ta route :
Revenons donc à ce fameux radar et à son fonctionnement :

Mais en fait, on se demande bien qui a pu coder le fonctionnement de ce fameux radar :
C'est donc un jeu extrêmement riche que nous signe cent20, présentant de plus sur calculatrice NumWorks des graphismes parfaitement fluides ainsi qu'un gameplay réactif !
Le donjon comporte 42 salles faisant chacune 32×20 cases, et tu démarres ton aventure avec 3 points de vie dans la 1ère salle constituant le niveau 1.
Dans chaque salle dans laquelle tu entres par la gauche, il te faut trouver la sortie, forcément située sur un des bords. Mais plusieurs péripéties t'attendent :
- d'une part ce donjon n'a pas de fenêtre, chaque salle est plongée dans l'obscurité
- de plus, comme si ce n'était déjà pas suffisant de ne rien y voir, les salles sont piégées, certaines cases ayant été minées, et marcher sur une mine te coûtera 1 point de vie
- Déjà, tu seras accompagné tout au long de l'aventure de ton fidèle radar, qui t'indique ce qu'il y a dans un petit rayon de 5 cases autour de toi, et nous allons y revenir.
- Bonus, des cœurs sont présents sur certaines cases de chaque salle, les ramasser te donnera à chaque fois 1 point de vie supplémentaire ; crois bien que tu vas en avoir besoin.
- Autre bonus de niveau militaire, des EMP sont présents sur d'autres cases de chaque salle, sachant que tu démarres déjà ton aventure avec 1 EMP (ElectroMagnetic Pulse, pour Impulsion ÉlectroMagnétique). Activer un de tes EMP à l'aide des touches usuelles d'action
EXE
ouOK
détruit toutes les mines proches de toi. La luminosité produite par l'explosion te montre temporairement tout ce qu'il y a dans un grand rayon autour de toi. Attention toutefois à ne pas trop abuser des EMP, car ils détruisent également les autres EMP proches de toi, et là c'est dommage car là aussi tu en auras grand besoin pour la suite… - Enfin, histoire de de rien rater de ces précieux bonus, leur nombre te sera indiqué à chaque début de niveau.
Revenons donc à ce fameux radar et à son fonctionnement :
- Pour les cœurs, les EMP et la sortie, rien à redire, il t'en indique clairement la position à condition bien sûr que ce soit dans la voisinage visible.
- Pour les mines c'est différent. Le radar associe à chaque case un niveau de gris représentatif du nombre de mines présentes sur la case en question et ses 8 voisines (haut gauche, haut, haut droite, gauche, droite, bas gauche, bas, bas droite).
Une case blanche indique qu'il n'y a pas de mine non seulement sur la case en question mais également sur ses 8 voisines peu importe leur couleur.
Une case en gris clair indique qu'il y a 1 mine, soit sur la case en question soir sur une de ses 8 voisines.
Un gris plus foncé indique qu'il y a 2 mines sur les 9 cases concernées, et etc.
C'est en fait la même logique que le jeu du démineur, mais avec des niveaux de gris à la place des chiffres. Par exemple, si une case gris clair est voisine d'une case blanche, c'est que la mine n'est pas dessus.
- Déjà, il a une mémoire de poisson rouge. Lorsque tu t'éloigne d'une zone découverte, cette dernière s'assombrit progressivement jusqu'à redevenir totalement inconnue.
- De plus, il se fatigue avec le temps. Son rayon de 5 initialement va décroître au fur et à mesure de ton avancée en terme de niveaux, comme indiqué avec tout le reste en barre de statut.
- Lors des premiers niveaux impairs (3, 5, 7 et 9), ton radar aura des éclairs de lucidité en début de niveau, te montrant un plan de l'intégralité de la salle avec les mines et la sortie… mais pendant moins de 3 secondes, durée qui de plus ira en décroissant. Bon courage pour réussir à mémoriser autre chose que la position de la sortie dans le délai imparti !
- À partir du niveau 10 c'est un autre comportement qui s'active. En début de niveau ton radar t'indiquera à la place la distance horizontale en cases te séparant de la sortie, mais en binaire. 0b11111 pour 31 t'indique donc que la sortie est sur le bord droit de la salle. Une distance inférieure t'indique que la sortie est plus proche, mais sans savoir si elle est sur le bord haut ou bas de la salle. Mais attention, ton radar n'arrivera plus à te fournir cette précieuse indication au-delà du niveau 30.
C'est donc un jeu extrêmement riche que nous signe cent20, présentant de plus sur calculatrice NumWorks des graphismes parfaitement fluides ainsi qu'un gameplay réactif !
Petite différence ici pouvant s'expliquer par un portage effectué en parallèle du développement du jeu initial, l'affichage de la carte complète n'attend pas le niveau 3 et se déclenche dès le niveau 1.
Le jeu est jouable et nous considérons donc le défi de portage comme rempli, mais il souffre malgré tout des lenteurs du Python sur TI-Nspire CX II (auxquelles on ne s'attend certes pas quand on connaît la puissance du matériel). On peut notamment lui reprocher sur calculatrice des rafraîchissements progressifs des différentes zones de l'écran à mettre à jour à chaque action, produisant un effet de balayage peu esthétique et surtout chronophage. Par exemple l'ombrage des zones anciennement découvertes nécessite d'attendre une bonne fraction de seconde avant de pouvoir indiquer le déplacement suivant.
C'est bien dommage de ne pas avoir amélioré cela en faisant appel au double buffering de la biboliothèque ti_draw. Il aurait suffit pour cela de seulement 2 lignes supplémentaires :
- un unique appel initial
ti_draw.use_buffer()
pour activer le double buffering - puis, après le code rafraîchissant les différentes éléments visuels suite à chaque action, d'un simple appel
ti_draw.paint_buffer()
pour afficher en une seule fois toutes les modifications
Ici le code reçu est malheureusement injouable sur calculatrice, suite à une toute petite erreur. Il n'y pas de bibliothèque time sur Casio, et les appels
time.sleep()
ont été remplacés par une boucle for. Sauf que cette boucle a apparemment été calibrée avec le simulateur Graph Math+ pour ordinateurs qui va beaucoup plus vite que la calculatrice. Sur calculatrice, l'affichage du plan intégrale de la première salles censé durer moins de 3 secondes nous bloque donc sans pouvoir rien faire pendant plusieurs minutes.C'est bien dommage car le jeu avait été fort bien travaillé, étant très loin d'un simple portage rapide. On peut citer :
- le redimensionnement des salles du donjon pour la nouvelle taille d'écran, ici en 40×17 cases
- l'utilisation du double buffering (de toutes façons la bibliothèque casioplot ne laisse pas le choix, c'est son seul mode de fonctionnement
En effet nous avons testé en vidant la fonction [i]sleep() de son contenu, et là ça devient parfaitement jouable, et chose remarquable, malgré le matériel modeste, avec des performances comparables à celles du portage pour TI-Nspire CX II sans utilisation du double buffering !
Très léger détail à côté de ce qui précède mais qui se voit clairement sur calculatrice, l'écran est inutilement rafraîchi 2 fois : une fois dès le déplacement dans la salle, puis alors que l'on pense que c'est fini, une 2e fois pour l'ombrage des zones déjà explorées.
Nous acceptons toutefois le jeu, et retenons qu'il est malgré tout jouable sur simulateur. C'est bien dommage, cette toute petite erreur faisant que nous risquons de ne pas pouvoir récompenser ce jeu qui aurait pu être génial, si tous les concurrents qu'il nous reste à évaluer en catégorie Casio ne partagent d'autres défauts majeurs de ce genre.
Téléchargements :
- Explore Escape pour NumWorks
- Explore Escape pour TI-Nspire CX II
- Explore Escape pour Casio Graph Math+ : version concours + version corrigée