Page 1 of 1

Le jeu WHIS sur la Casio Graph Math+

Unread postPosted: 27 Jul 2024, 19:02
by Afyu
Dans un précédent article, je te présentais mon adaptation du mini-jeu WHIS pour en faire un jeu compatible avec la NumWorks, sous la forme d'une version Epsilon et d'une version un peu améliorée qui ne fonctionne qu'avec Upsilon.
2018720225

19006Mais 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 est 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 ! :D

Le mini-jeu WHIS a donc pu être adapté pour en faire une version qui fonctionne avec la Graph Math+ ! :#tritop#:
20234

Les règles du jeu sont détaillées dans l'article qui présente les versions NumWorks.

Si la Graph Math+ dispose d'une fonction getkey(), elle est malheureusement (à ce jour) toujours dépourvue du module time et en particulier de la fonction sleep qui permet de faire une pause de durée déterminée dans l'exécution du script.

Il manque également la fonction fill_rect qui permet de dessiner un rectangle plein en précisant sa position, ses dimensions et sa couleur. Il a donc fallu adapter et recoder ces fonctions, de la même manière qu'avec l'adaptation de la version NumWorks du jeu Orlog pour en faire une version Graph Math+.

Par ailleurs, les couleurs données en paramètre des fonctions draw_string ou set_pixel ont également été transformées pour être écrites exclusivement sous la forme d'un triplet de nombres entiers, puisque c'est le seul format d'écriture des couleurs accepté par ces deux fonctions. :(

Dans le même esprit d'adaptation, la fonction draw_string a été recodée pour remettre ses différents paramètres dans l'ordre attendu par la version Casio de cette fonction, sans devoir modifier manuellement chacun des 71 appels à cette fonction !

Pour cette adaptation, pas de compensation des coordonnées en +38 et +1 parce que ce n'est pas une adaptation depuis la version Graph 90+E + PythonExtra mais directement depuis les versions NumWorks. Plus de détails sur la manière de recréer les fonctions sleep et fill_rect, dans la présentation du jeu Orlog sur la Graph Math+.

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 sur ce point. :(

Parlons maintenant des améliorations que la grande mémoire de stockage et surtout que la grande mémoire de travail de la Graph Math+ ont permis d'ajouter !

Faute d'espace mémoire suffisant sur la NumWorks, les visages des personnages n'avaient pas pu être ajoutés. Ce qui est bien dommage...

La mémoire de la Graph Math+ permet d'ajouter ces visages ! :#tritop#:
Les noms des joueurs J1, J2, J3 et J4 sont dorénavant remplacés par les visages des 4 personnages du jeu initial : Reid, Keele, Meredy et Farah. :#tritop#:
2022820239


L'icone de carte miniature qui précède le nombre de cartes en main dans le jeu d'origine a été remplacé par le caractère ▮, qui ressemble à une carte miniature, affiché en utilisant le caractère échappé "\u25ae". Or ce caractère ne fait pas partie de la table des caractères supportés (pour le moment) par la NumWorks. Il est donc affiché sous la forme que prennent les caractères non reconnus : un rectangle vide avec ses diagonales.

On peut remarquer que cette carte miniature a gagné en détails et en couleurs en laissant sa place à une véritable petite image très colorée. :)

Pour mettre en évidence de quel joueur c'est le tour de jouer et s'il joue ou pioche une carte, j'ai utilisé l'astuce de simplement modifier la couleur de fond d'affichage du numéro du joueur ainsi que de son score. Cette ruse permettait de prendre très peu de place dans la mémoire de la NumWorks. :)

Ce fond coloré est remplacé par un cadre qui entoure le visage du joueur ainsi que son score et son nombre de cartes en main, en reprenant le même code couleur : fond violet pour le joueur dont c'est le tour de jouer puis fond vert s'il joue une carte ou fond rouge s'il pioche une carte. :D
20235202362023720238

Par ailleurs, chaque carte piochée est accompagnée d'une alternance d'affichage entre le cadre rouge qui entoure la pioche et le cadre rouge qui entoure le visage du joueur concerné. :)

La grande mémoire a également permis de reproduire une animation de ces visages présente dans le jeu d'origine. :#wahoo#:
Pour éviter de ralentir l'exécution du programme sur la Graph Math+ (qui ne bénéficie pas de la rapidité de PythonExtra :( ), seulement la partie du visage qui est animée est redessinée. Je vous laisse découvrir cette animation en jouant au jeu ! :)

Les images ont maintenant bien plus de 8 couleurs ! :#tritop#:
J'ai utilisé un encodage identique à celui utilisé pour les versions NumWorks, c'est-à-dire en utilisant une palette de couleurs pour chaque image puis en ne codant que le rang de la couleur de chaque pixel dans la palette de couleurs de l'image.

Cependant, en utilisant un caractère pour un pixel (au lieu de deux pixels pour les versions NumWorks) et en permettant d'utiliser autant de couleurs qu'il y a de caractères accessibles depuis la Graph Math+ (sans utiliser de caractères échappés, mais on aurait pu le faire) c'est-à-dire 92 caractères, on peut désormais utiliser 92 couleurs ! :#tritop#:
19813
Il y a en fait 95 caractères utilisables mais j'ai choisi d'exclure les doubles guillemets " (et les deux caractères situés avant, dans la table des caractères, soit l'espace et le point d'exclamation) pour éviter qu'ils ne referment prématurément la chaîne de caractères qui encode l'image. Les images ont donc jusqu'à 92 couleurs différentes (et chaque image a sa palette de maximum 92 couleurs).
On peut observer les différences sur la carte Prisme, par exemple.
2018820253

20241Les visages ont initialement entre 12 et 15 couleurs seulement. La plupart des cartes a initialement entre 51 et 83 couleurs et les 5 cartes restantes (les cartes d'attaque, la carte Prisme et la pioche) ont initialement entre 114 et 150 couleurs.

La réduction à 92 couleurs n'a donc pas un très grand impact sur la qualité des images. Dans la capture d'écran du jeu original, on peut comparer la carte en jeu, Prisme, avec ses versions NumWorks et Graph Math+ présentées dans le paragraphe précédent. Il y très peu de différences entre la version Graph Math+ et ses 92 couleurs et la version PSP et ses 121 couleurs. ;)

20242Sur suggestion de notre cher SlyVTT, il est dorénavant possible de choisir son personnage (sans que ça soit systématiquement le joueur J1 devenu Reid) !

En prime, il est possible de jouer à plusieurs ! :#tritop#: :#wahoo#:
Au lancement d'une partie avec le choix Jeu :) du Menu d'accueil, il est maintenant possible de choisir entre 0 et 4 joueurs humains.

20243Dans le cas d'un nombre au moins égal à 2, les cartes de chacun des joueurs humains ne sont affichées qu'après avoir appuyé sur EXE ou OK, pour garder un peu de discrétion et de mystère. :D

Dans le cas du choix de 0 joueur humain, c'est-à-dire de 4 joueurs gérés automatiquement par la calculatrice, le choix est proposé d'afficher ou non les cartes de chaque joueur lorsque c'est son tour de jouer. L'absence d'affichage des cartes accélère le déroulement automatique de la partie, mais laisse beaucoup moins de visibilité sur la stratégie de chaque joueur. :)

20244Un écran de titre égaye le lancement du jeu :#tritop#: (avec 92 couleurs, ici encore, ce qui est largement suffisant). Merci beaucoup à SlyVTT pour avoir trouvé une image qui correspond bien à l'esprit du jeu ! :D :favorite:
Le fond noir qui habille cet écran de titre est conservé tout au long du jeu, y compris dans les entrées Cartes et Règles du menu, pour mettre en valeur les couleurs des visages et des cartes et apporter une touche d'élégance et de sobriété (enfin, j'espère ! xD ).

À l'opposé de l'écran de titre dans le déroulement du jeu, l'écran de fin de manche est illustré avec les visages animés des personnages et une fois la partie terminée (donc à la fin de la dernière manche), il est proposé au joueur de recommencer une partie, sans même devoir relancer le jeu ! :D
2024520246

20247En outre, de nouveau sur suggestion de notre cher SlyVTT, cet écran de titre est immédiatement suivi d'un écran de choix de langue. Oui, il est possible de jouer avec les textes en français ou bien en anglais ! :#tritop#:
Le jeu d'origine étant intégralement en anglais, les textes en anglais n'ont pas été difficiles à trouver. :D
Tout le jeu est jouable en anglais. Tous les textes sont traduits, même les plus courts, de l'écran d'accueil jusqu'à l'écran de fin de partie ! :#wahoo#:
202482025120252


20234Au fait, comment joue-t-on ?

  • On utilise les flèches gauche et droite pour sélectionner une carte ou l'élément demandé dans le cas de l'utilisation des cartes Prisme, Lumière ou Obscurité.
  • On valide avec OK ou EXE.
  • On pioche volontairement ou on passe son tour volontairement avec la touche Retour, à gauche de la flèche gauche.

Et 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 WHIS_v54_GM_sans_accent_JcJ 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. :#tritop#:

Il est également possible de simplement renommer le script WHIS_v54_GM_sans_accent_JcJ.py en module.py puis de le mettre dans la mémoire de la Graph Math+. Il sera alors automatiquement exécuté dès que l'on accède au Shell Python. :)

Bon jeu ! :D


La légende raconte qu'un add-in permet de lancer des jeux Python sur les Casio Graph 90+E avec un affichage très rapide et l'utilisation des modules Python de la NumWorks. Et si... ?

Téléchargement :

Re: Le jeu WHIS sur la Casio Graph Math+

Unread postPosted: 29 Jul 2024, 22:13
by critor
Merci pour les efforts afin de doter la Graph Math+ d'une belle collection de jeux graphiques dédiés avec getkey() à temps pour la rentrée 2024 ! 👍