π
<-

Explore Escape NumWorks/TI/Casio, concours Python 2024-2025

Explore Escape NumWorks/TI/Casio, concours Python 2024-2025

Unread postby critor » 13 Apr 2025, 13:59

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 :
  • 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

220822208122080Pour affronter cette difficulté, tu disposeras fort heureusement de plusieurs alliés sur ta route :
  • 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
    ou
    OK
    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.

2208522084Mais en fait, on se demande bien qui a pu coder le fonctionnement de ce fameux radar :
  • 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 !
    22083
  • À 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.
En résumé un radar assez changeant et donc capricieux, il te faudra faire preuve d'adaptation afin d'en tirer le meilleur parti.

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 !


22086C'est donc ilyas.r qui signe le portage pour calculatrices TI-Nspire CX II et leur écran 320×240 pixels très similaire, exploitant ici à la place la bibliothèque graphique ti_draw.

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


22087R0baiyn a pour sa part relevé le défi de porter le jeu pour Graph Math+, malgré un matériel très inférieur et un écran plus original avec une zone graphique de 384×192 pixels. Il utilise donc à la place la bibliothèque graphique casioplot.

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 :
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.4%
 
Posts: 42253
Images: 16710
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Explore Escape NumWorks/TI/Casio, concours Python 2024-2

Unread postby critor » 13 Apr 2025, 23:00

J'ai trouvé de petits bugs dans la version Casio.

Le rafraîchissement partiel de tuiles déborde sur les tuiles voisines, car la fonction de remplissage de rectangle compte 1 pixel de trop horizontalement et verticalement :
Image

Les dimensions de la carte n'utilisent pas de variable globale, mais sont recopiées tout le long du code.
Et il y a 2 lignes où le remplacement des dimensions d'origine par les dimensions Casio n'a pas été effectué.
En pratique, cela fait qu'on se retrouve dans le noir à droite de la carte.
Image
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.4%
 
Posts: 42253
Images: 16710
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Explore Escape NumWorks/TI/Casio, concours Python 2024-2

Unread postby critor » 13 Apr 2025, 23:04

Cela m'embête d'avoir des jeux non fonctionnels dans les archives, qui plus est des jeux à qui il ne manque pas grand chose pour être très réussis...

Alors voici pour Graph Math+ :

Pour la gestion correcte des délais, le jeu demande au lancement si on est sur calulatrice ou simulateur :
Image
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.4%
 
Posts: 42253
Images: 16710
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Explore Escape NumWorks/TI/Casio, concours Python 2024-2

Unread postby cent20 » Yesterday, 15:58

"La luminosité produite par l'explosion te montre temporairement tout ce qu'il y a dans un grand rayon autour de toi"

Tu es vraiment un poète quand tu racontes l'histoire :)

Comme parfois on découvre la sortie rapidement et qu'on a pas attrapé tous les bonus, il existe un trick pour que la dite sortie reste affichée sur la carte et ne soit pas touchée par le brouillard de guerre.

N'essayez pas de sortir de l'écran, vous perdrez 2 vies, une pour la bordure, une pour le reset du niveau. Aucun moyen de s’échapper.

Maintenant, pour réussir à finir le jeu, il va falloir stocker, économiser, utiliser au mieux vos vies et vos EMP, tout est une question de choix (Niveau, carte visitée, bonus attrapés, perdre un EMP ou une Vie ?, niveau de gris)

Mon record est niveau 36 ou 38.

Même si les portages sont imparfaits, félicitation à mes anciens padawans qui n'avaient que des émulateurs / simulateurs à leur disposition, et donc aucun moyen de constater les lags et ralentissements.

"l'affichage de la carte complète n'attend pas le niveau 3 et se déclenche dès le niveau 1."
Ceci a été modifié par moi, au dernier moment, pour des raisons liées à l'UI / UX du jeu.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Amélioration NumWorks à pousser (un commentaire, un pouce, je compte sur vous) : #2292, #1680
User avatar
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 51%
 
Posts: 1115
Images: 67
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: nsi_xyz


Return to News NumWorks

Who is online

Users browsing this forum: No registered users and 35 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1745 utilisateurs:
>1695 invités
>45 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)