Tu connais peut-être le mini-jeu
WHIS que l'on trouve dans le jeu
Tales of Eternia (sorti sur Playstation en 2000-2001 et sur PSP en 2005-2006 et aussi connu sous le nom
Tales of Destiny II).
C'est un jeu de cartes qui se joue à plusieurs (4 joueurs dans le jeu
Tales of Eternia) dont le principe ressemble beaucoup à celui du jeu
UNO mais avec des cartes différentes, principalement axées sur les éléments au lieu des chiffres.
Jusqu'à présent, pour jouer à ce mini-jeu, il fallait posséder le jeu ainsi que la console qui permet de le lancer et avoir avancé suffisamment dans l'aventure pour avoir débloqué l'accès à ce mini-jeu.
On pouvait également s'en remettre à l'une des adaptations du mini-jeu seul, disponibles sous la forme d'un jeu d'ordinateur.
Ou encore, avec un esprit bricoleur, on pouvait recréer ce jeu et en faire un jeu de société, avec des (vraies) cartes.
Je te propose une adaptation de ce mini-jeu sous la forme d'un jeu pour calculatrice, programmé en Python.
Découvrons-la avec la présentation du principe et du déroulement du jeu :
Le plateau de jeu montre le score et le nombre de cartes en main de chacun des 4 joueurs, ainsi que la carte actuellement en jeu mais également la pioche, le sens de rotation du jeu et l'ensemble des cartes dans la main du joueur que l'on incarne : le joueur J1.
Le principe du jeu est le suivant : - Chaque joueur joue à tour de rôle en jouant ou piochant une ou plusieurs cartes.
- Le jeu se déroule en 5 manches. Au début de chaque manche, les joueurs ont chacun 6 cartes dans leur main. Une manche se termine lorsque l'un des joueurs a joué toutes ses cartes (il est alors le gagnant) ou s'apprête à piocher alors qu'il a déjà 15 cartes en main (il est alors le perdant).
- À la fin de chaque manche, le score de chaque joueur est actualisé en fonction des cartes qu'il lui reste en main et qu'il reste dans la main des autres joueurs.
- À la fin des 5 manches, le joueur qui a le plus grand score a gagné la partie.
Avant de présenter plus en détails les règles, présentons les cartes : (la présentation individuelle des cartes est consultable dans le choix
Cartes de l'écran d'accueil du jeu, mais les captures d'écran viennent du menu
Règles)
Il y a 3 éléments :
Eau,
Feu et
Vent.
Le cadre des cartes indique l'élément d'une carte :
bleu pour
Eau,
rouge pour
Feu et
vert pour
Vent.
Les cartes de l'élément
Eau sont :
- la carte simple
- la carte d'attaque
- la carte spéciale (Prisme) qui permet de choisir l'élément qui sera demandé au joueur suivant
- la carte de transition (Volt) qui permet de modifier l'élément en jeu et passer de Eau à Vent.
Les cartes de l'élément
Feu sont :
- la carte simple
- la carte d'attaque
- la carte spéciale (Double) qui permet de rejouer immédiatement une carte
- la carte de transition (Glace) qui permet de modifier l'élément en jeu et de passer de Feu à Eau.
Les cartes de l'élément
Vent sont :
- la carte simple
- la carte d'attaque
- la carte spéciale (Change) qui permet d'inverser le sens de rotation du jeu
- la carte de transition (Terre) qui permet de modifier l'élément en jeu et de passer de Vent à Feu.
Les cartes de changement d'élément sont :
- la carte Lumière
- la carte Obscurité
Elles peuvent être jouées sur n'importe quelle carte (sauf
carte d'attaque active) et permettent de choisir l'élément qui sera demandé au joueur suivant.
Le cadre de ces cartes est : jaune pour
Lumière et gris pour
Obscurité.
Présentons plus en détails les règles du jeu. Les règles suivantes sont consultables dans le jeu, avec les choix
Cartes et
Règles de l'écran d'accueil du jeu.
Le jeu se déroule en 5 manches dont le déroulement est le suivant : - Au début de la manche, chaque joueur a 6 cartes en main.
- Lorsque c'est son tour, chaque joueur joue une carte de sa main qui vient remplacer la carte actuellement en jeu.
- Si un joueur ne peut pas jouer parce qu'il n'a pas de carte compatible avec la carte actuellement en jeu, alors il doit piocher une carte. S'il a pioché une carte qui peut être jouée, alors il peut la jouer. Sinon, son tour est terminé.
- Lorsque c'est son tour, si un joueur peut jouer une carte mais ne souhaite pas jouer, il peut choisir de passer son tour. Dans ce cas, il devra piocher puis son tour sera terminé.
- La manche se termine lorsque l'un des joueurs a réussi à jouer toutes ses cartes ou lorsque l'un des joueurs s'est retrouvé à devoir piocher alors qu'il avait déjà 15 cartes en main.
- À la fin de chaque manche, le score de la manche est calculé pour chaque joueur et le score global de chaque joueur est actualisé en conséquence.
Lorsque l'on joue une carte
Prisme,
Lumière ou
Obscurité, on choisit l'élément demandé en sélectionnant le carré de la couleur correspondante (
bleu pour
Eau,
rouge pour
Feu et
vert pour
Vent). Cet élément est alors symbolisé par un carré coloré qui recouvre le coin supérieur droit de la carte en jeu.
Chaque carte jouée doit être compatible avec la carte actuellement en jeu, c'est-à-dire qu'elle doit être de l'élément attendu.
Le cas particulier des cartes d'attaque :Si la carte en jeu est une
carte d'attaque, alors il est possible de jouer une
carte d'attaque de n'importe quel élément ! Chaque
carte d'attaque fait piocher 2 cartes au joueur suivant s'il ne peut pas surenchérir avec une autre
carte d'attaque. Le nombre de cartes à piocher est cumulatif (tout comme la règle pas du tout officielle des joueurs de
UNO qui enchaînent et cumulent les cartes +2
. Par exemple : 3 cartes d'attaques successives impliquent 6 cartes à piocher).
Si un joueur ne peut pas surenchérir sur une
carte d'attaque et qu'il pioche, alors la
carte d'attaque est neutralisée. Le joueur suivant doit jouer une carte (éventuellement d'attaque) de la couleur de la
carte d'attaque neutralisée en jeu. En cas d'impossibilité de jouer, la
carte d'attaque étant neutralisée, il faut piocher une carte (et une seule !), comme illustré ci-dessous avec J4 qui pioche et la
carte d'attaque qui est neutralisée, ce qui fait piocher une seule carte à J1 qui ne peut pas jouer :
Mais comment est calculé le score en fin de manche ? (le paragraphe qui suit n'est pas expliqué dans le choix
Règles de l'écran d'accueil du jeu)
Chaque carte a une valeur en points :
- Les cartes simples et les cartes de transition valent 2 points chacune.
- Les cartes spéciales (Prisme, Double et Change) valent 5 points chacune.
- Les cartes d'attaque valent 10 points chacune.
- Les cartes Lumière et Obscurité valent 20 points chacune.
On effectue la
somme des valeurs en points des cartes restant dans la main de chaque joueur.
- S'il y a un gagnant (un joueur qui a joué toutes ses cartes), alors chacun des autres joueurs est perdant. Chaque joueur perdant perd la somme des points de ses cartes restant en main. Le joueur gagnant gagne la somme des points de l'ensemble des cartes restant dans la main de tous les joueurs perdants.
- S'il y a un perdant (un joueur qui s'apprêtait à piocher alors qu'il avait 15 cartes en main), alors chacun des autres joueurs est gagnant. Chaque joueur gagnant gagne le tiers (arrondi à l'entier inférieur) de la somme des points des 15 cartes restant en main du joueur perdant. Le joueur perdant perd la somme des points de ses cartes restant en main, (arrondi au multiple de 3 inférieur, si besoin).
Le joueur qui termine la manche en étant le gagnant ou le perdant commence la manche suivante.
Pour donner un peu plus de lisibilité au déroulement du jeu, le cadre de chaque joueur change de couleur pour indiquer le joueur dont c'est le tour (fond
violet), s'il joue une carte (fond
vert) ou s'il pioche (fond
rouge).
Une flèche indique le sens de rotation du jeu et permet de savoir qui sera le prochain joueur.
Au 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 dans la version Epsilon et avec OK ou EXE dans la version Upsilon.
- On pioche volontairement ou on passe son tour volontairement avec la touche shift. Attention, la touche Retour interrompt l'exécution du script !
Si tu as une calculatrice
NumWorks, alors tu peux y transférer cette
version.
Si tu n'as pas de calculatrice
NumWorks, alors tu peux tout de même tester cette
version du jeu, en utilisant les
flèches gauche et droite, la touche
Shift et la touche
Entrée du clavier.
Les cartes du jeu d'origine sont très colorées et riches en détails mais une partie de ces détails a été perdue lors de l'encodage des images. En effet, pour faire tenir toutes ces données dans la mémoire restreinte de la
NumWorks, il a fallu réduire le nombre de couleurs par image !
En utilisant les fonctionnalités du logiciel Gimp, j'ai transformé chacune des images en une image indexée qui comporte au maximum 8 couleurs. Un détail qui a toute son importance : ces 8 couleurs choisies sont celles qui correspondent le mieux aux couleurs présentes dans l'image d'origine et ne sont pas une répartition uniforme des couleurs sur le spectre des couleurs comme ce que l'on obtiendrait en transformant les images en mode RGB565.
Cette réduction permet d'encoder la couleur de 2 pixels avec un seul caractère ! En effet, en créant une palette de 8 couleurs pour chaque image, il suffit ensuite pour chaque pixel de stocker le rang de sa couleur dans cette palette et pour deux pixels, ça fait 8×8 rangs nécessaires, soit 64 valeurs différentes.
En Python, un caractère est associé à son rang dans la table des caractères ASCII, donc à un nombre. Sur la NumWorks, il est possible de trouver 64 caractères qui correspondent donc à 64 rangs dans cette table et la commande ord(caractère)
permet de récupérer ce rang. Par exemple, ord('a')
renvoie la valeur 97
.
Avec 64 valeurs différentes, il est possible d'encoder 8×8 valeurs différentes, soit 8 rangs pour un pixel et 8 rangs pour un autre pixel, donc un caractère permet de stocker le rang de la couleur de 2 pixels dans la palette de couleurs de l'image.
En fait, étant donné que Python compte à partir de 0 pour le rang dans une liste, on souhaite avoir un nombre compris entre 0 et 63 et on récupère les deux rangs en effectuant la division euclidienne de ce nombre par 8 et on récupère le quotient et le reste, ce qui donne bien deux chiffres compris entre 0 et 7. J'ai choisi les caractères de rangs 35 à 98 dans la table des caractères ASCII avec un décalage de 35 pour revenir à des nombres compris entre 0 et 63.
L'aventure aurait pu se terminer ici, avec un jeu de cartes aux couleurs chatoyantes (mais seulement 8 couleurs différentes par carte) et de simples carrés de couleurs pour choisir l'élément demandé au joueur suivant. Mais c'était sans compter sur le travail formidable de la communauté de développeurs qui a produit le firmware alternatif Upsilon qui peut être installé sur certaines NumWorks, à certaines conditions, et qui permet de bénéficier d'une mémoire de travail augmentée.
Le gain de place a permis de remplacer les carrés colorés du mini menu de choix de l'élément demandé au joueur suivant par les images d'origine : un fond bleuté pour l'
Eau, une petite flamme pour le
Feu et une petite tornade pour le
Vent.Ces petites images ont d'ailleurs été ajoutées à l'écran d'accueil.
Les choix de menus présentant les
Cartes et les
Règles ont également gagné un titre, en haut de l'écran.
L'écran de fin de partie montre maintenant clairement qui est le joueur gagnant (en
vert) et qui est le joueur perdant (en
rouge).
Il n'y a pas d'autres différences entre les versions
Epsilon et
Upsilon du jeu, l'ajout des visages nécessitant encore bien davantage d'espace en mémoire que ce que
Upsilon offre.
Si tu as une calculatrice
NumWorks sur laquelle tu peux installer le firmware
Upsilon, alors tu peux y transférer cette
version.
Si tu n'as pas de calculatrice
NumWorks, alors tu peux tout de même tester cette
version du jeu, en utilisant les
flèches gauche et droite, la touche
Entrée et la touche
shift. Ceci est rendu possible grâce au formidable
Workshop Upsilon de
Yaya.Cout.
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(). Et si... ?Liens et ressources :