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.
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+ !
![Géant! :#tritop#:](./images/smilies/123.gif)
Les règles du jeu sont détaillées dans l'article qui présente les versions NumWorks.
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
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()
+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.![:) :)](./images/smilies/smile.png)
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.
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.
![:) :)](./images/smilies/smile.png)
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.
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. ![:D :D](./images/smilies/grin.png)
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 ![Géant! :#tritop#:](./images/smilies/123.gif)
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 ! ![Géant! :#tritop#:](./images/smilies/123.gif)
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.
![:) :)](./images/smilies/smile.png)
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
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 !![:D :D](./images/smilies/grin.png)
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.
![Géant! :#tritop#:](./images/smilies/123.gif)
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 !
![:D :D](./images/smilies/grin.png)
Téléchargement :
- Version Casio Graph Math+ (sans accents) : http://ti-pla.net/a4074302