Il y a quelques jours, je te présentais dans deux
précédents articles mon adaptation du jeu Orlog, un mini-jeu de dés et de jetons issu du jeu
Assassin's Creed : Valhalla, en une version pour
NumWorks Epsilon, une version pour
NumWorks Upsilon légèrement améliorée, ainsi qu'une version compatible
Graph 90+E qui tire parti de sa grande mémoire de travail et des formidables possibilités offertes par l'add-in
PythonExtra.
Mais
la rumeur dit qu'un nouveau modèle de calculatrice Casio vient de voir le jour, avec une grande mémoire de travail et une version de Python munie d'une fonction getkey().Ce nouveau modèle de calculatrice est en fait la
Graph Math+ dont tu peux lire un
test très complet réalisé par les équipes de
TI-Planet et de
Planète-Casio.
Contrairement à celle de la
Graph 90+E qui en était dépourvue, l'implémentation Python de la
Graph Math+ dispose de la fonction
getkey()
qui permet de détecter en temps réel un appui sur les touches et permet ainsi de faire des jeux bien plus interactifs !
Il a donc été possible d'adapter le jeu Orlog pour en faire une version qui fonctionne avec la
Graph Math+ !
Les règles du jeu sont détaillées dans
l'article qui présente les versions
NumWorks.
La version pour la
Graph Math+ est directement adaptée de la version pour la
Graph 90+E, mais une simple traduction ou conversion des différentes fonctions utilisées, comme
getkey()
à la place de
keydown()
, est loin d'être suffisante !
En effet, la
Graph Math+ ne dispose pas du module
time
et contrairement à la version pour la
Graph 90+E qui utilise
PythonExtra et donc tous les modules de la
NumWorks, la version pour la
Graph Math+ n'utilise que les modules et fonctions disponibles nativement. Il a donc fallu recoder la fonction
sleep
du module
time
qui est très régulièrement utilisée pour mettre l'exécution du script en pause durant le temps demandé en paramètre (en sec).
On peut proposer, pour recoder la fonction
sleep
:
- Code: Select all
def sleep(k=1):
for i in range(k*10**4):
i**2
L'implémentation Python de la
Graph Math+ ne comporte pas non plus de fonction
fill_rect
qui est pourtant bien pratique pour dessiner des rectangles et remplir des zones de l'écran, sans devoir le faire pixel par pixel. Il est possible de recoder cette fonction en utilisant 2 boucles imbriquées et la fonction
set_pixel
.
On peut proposer, pour recoder la fonction
fill_rect
:
- Code: Select all
def fill_rect(x,y,dx,dy,clr):
for i in range(x,x+dx):
for j in range(y,y+dy):
set_pixel(i+38,j+1,clr)
show_screen()
Jusque-là, rien de bien extraordinaire. Mais on remarque un étrange
+38
et un étrange
+1
. En effet, si la fenêtre graphique disponible sur la
Graph 90+E avec
PythonExtra offre une définition de 396 par 224 pixels, la fenêtre graphique de l'implémentation Python de la
NumWorks n'offre que 320 par 222 pixels.
Notre cher
SlyVTT a œuvré pour porter dans l'add-in
PythonExtra l'ensemble des fonctions et modules disponibles dans l'implémentation Python de la
NumWorks mais il y a également ajouté une
extension qui permet de ne pas être limité à une fenêtre de 320 par 222 pixels mais d'exploiter la grande taille de l'écran de la
Graph 90+E qui nous offre une définition de 396 par 224 pixels. Mais pour en profiter, il faut choisir des coordonnées qui commencent
artificiellement à -38 en abscisses pour exploiter la marge de gauche et à -1 en ordonnée, pour récupérer la toute première ligne de l'écran.
En revanche, le premier pixel en haut à gauche de l'écran de la
Graph Math+ a pour coordonnées (0,0) et non pas (-38,-1). Pour ne pas devoir modifier toutes les coordonnées du script, il était plus simple et plus rapide de convertir les coordonnées à la volée, au moment de l'affichage.
Par ailleurs, la fenêtre graphique de la
Graph Math+ n'offre
que 384 par 192 pixels (au lieu de 396 par 224 pixels pour la
Graph 90+E). Il a donc fallu ajuster le placement des différents éléments du jeu sur le plateau et l'affichage des divinités.
Il a également été nécessaire de redéfinir la fonction
draw_string
(qui permet d'afficher du texte dans la zone graphique) en remettant ses différents paramètres dans l'ordre qui convient à la
Graph Math+, c'est-à-dire avec la chaîne de caractères placée
après les coordonnées d'affichage.
Petite remarque en passant : la fonction
draw_string
de la
Graph Math+ ne permet pas de choisir une couleur de fond en plus de la couleur du texte, mais permet en revanche de choisir la taille de la police parmi "small", "medium" et "large". C'est la taille "small" qui est utilisée dans l'affichage compact du plateau en bas de l'écran de choix de la divinité à invoquer et c'est la taille "medium" qui est utilisée ailleurs.
Il est à noter qu'en revanche le module
casioplot propose des fonctions qui ne sont pas disponibles avec le module
kandinsky de la
NumWorks, telles que la fonction
clear_screen()
pour effacer l'écran rapidement, sans devoir tracer un immense rectangle blanc qui recouvre l'écran, ou encore la fonction
show_screen()
qui permet de tirer profit du double buffering que permet la
Graph Math+ et qui permet de préparer une image sans l'afficher puis d'afficher d'un coup l'image générée une fois qu'elle est prête. De quoi afficher de jolis écrans sans laisser entrevoir les étapes de construction !
Un dernier détail et un dernier bémol : l'appel des différentes couleurs dans la fonction
set_pixel
ou dans la fonction
draw_string
du module
casioplot ne se fait pas avec autant de souplesse qu'avec les fonctions équivalentes du module
kandinsky de la
NumWorks. En effet, la seule forme acceptée est l'écriture sous la forme d'un triplet de nombres entiers compris entre 0 et 255. Il faut donc exclure toute autre forme.
Par ailleurs, l'implémentation Python de la
Graph Math+ ne gère pas les caractères accentués. Ils ont donc été retirés, jusqu'à amélioration de la situation.
Mais, au fait, comment lance-t-on le jeu ?Pour jouer à ce jeu, il faut mettre le script Python du jeu dans la mémoire de stockage (celle qui s'affiche en mode USB) de la
Graph Math+ puis depuis la calculatrice, aller dans le menu Python, puis dans le
Shell il faut saisir (à chaque lancement du jeu) la commande suivante
from Orlog_v103_GM_IAmoyenne_sans_accents import *
puis appuyer sur
OK ou
EXE.
Je conseille vivement de renommer le fichier et de choisir un nom bien plus court.
On peut également saisir cette ligne (une bonne fois pour toute) dans le script module.py, qui est exécuté automatiquement dès que l'on accède au
Shell Python de la
Graph Math+. Ensuite, pour chaque lancement du jeu, il n'y a alors plus qu'à accéder au
Shell Python pour un lancement automatique, sans rien devoir saisir de plus.
Ensuite, on joue en utilisant les 4 flèches et la touche
EXE. Pour la version
Graph Math+, j'ai ajouté la possibilité d'utiliser la touche
OK pour désigner ou enlever une face de dé ou une divinité avant de valider avec
EXE. La touche
OK agît donc comme les flèches
haut et
bas.
Bon jeu !
Téléchargement :