Nom
Resumé
openallumette [ [-n|--number] SeedNumber ] [ [-v|--varient] [trivial | marienbad | grundy | wythoff ] [-w [ttl|ltl] ] openallumette Descriptor openallumette [-h|--help] [-v|--version] [--hall-of-fame]
openallumettetutor openallumette --tutor
Logo
Description
openallumette est une implémentation du jeu de Nim en Python se basant sur la bibliothèque Pygame, et conçue pour fonctionner seulement avec un clavier (comme vim).
Au premier lancement, un tutoriel sur les commandes et les moyens d'interaction avec l'interface est affiché.
Ce tutoriel ne sera pas affiché lors des lancements suivants même si vous pouvez le voir à nouveau en entrant la commande openallumettetutor
.
Notez que les jeux de Nim ont une solution mathématique. Dès que vous la trouvez pour une variante, vous gagnez à tous les coups, il devient alors inintéressant de jouer à la variante.
C'est justement la raison d'être d'openallumette: guider les amateurs vers cette solution.
Dans les futures versions, toutes les variantes du jeu connues seront disponibles.
Ce jeu a été conçu pour les matheux et les amateurs sérieux de jeux. Plus tard, des outils pour mieux comprendre les jeux de Nim seront ajoutés.
⚠ Si vous cherchez un jeu enfantin et une interface graphique, passez votre chemin. Open Allumette est fait pour les nerdz par un geek, comme s’il s’agissait d’un éditeur de texte pour programmeurs. Et nous en sommes fiers.
Règles
Le jeu de Nim classique est un jeu au tour-par-tour. Les règles exactes dépendent de la variante, généralement le joueur doit prendre la dernière allumette (mode ttl pour "take-the-last" soit "prends la dernière") ou forcer l'adversaire à la prendre (mode ltl pour "let-the-last" soit "laisse la dernière"). Pour le moment openallumette ne permet de jouer que contre un bot. Dans de futures versions, un mode multijoueur à travers XMPP sera probablement disponible.
Utilisation
Le joueur peut directement lancer le jeu avec les configurations désirées en utilisant les options -n
, -v
et -w
(Voir la section Options), ou aussi avec la chaîne de descripteur standard (Voir la section Configuration du descripteur).
À partir du moment où Open Allumette est lancé, le joueur peut ouvrir une autre session avec les commandes normales ou ex (voir les sections CommandEs et Ex commands’s).
Options
-n
,--number=Graine
- Démarre une partie avec Graine comme valeur de graine (valeur par défaut: 16)
- -v,
--varient=VariantE
- Démarre une partie avec
VariantE
comme variante de jeu (valeur par défaut: trivial) -w
wtw- Démarre une nouvelle partie en mode wtw
, il y a deux modes possibles, ttl et ltl. Voir la section
wtw Mode pour plus de détails. -c
,--color-sheme=palette
- Utilise palette comme palette à utiliser.
--hall-of-fame
- Affiche le tableau d'honneur dans la console.
Composition de la fenêtre
Lors d'une partie, l'écran est normalement divisé en trois parties comme schématisé ci dessous. La zone des commandes permettant de taper les commandes, la zone d'historique montrant une liste d'actions et la zone des allumettes donnant une vue de la situation actuelle de la partie.
╔═════╦════════════════════════════════════════════════════╗ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║Zone ║ ║ ║d'his║ ║ ║tori ║ zone du match ║ ║que ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠═════╩════════════════════════════════════════════════════╣ ║ zone des commandes ║ ╚══════════════════════════════════════════════════════════╝
ZONE DES COMMANDES
C'est la zone principale du jeu car c'est la zone d'action de l'utilisateur. Elle est disposée au bas de la fenêtre et divisée en cinq parties qui sont, de gauche à droite:
- Nom de la Variante
- Cette zone affiche quelle variante est actuellement lancée.
- Zone des commandes Ex
- Cette zone affiche les commandes Ex. Voir la section dédiée dans Commandes.
- Raccourcis claviers
- Cette zone affiche les commandes en mode Normal Voir la section Raccourcis pour plus de détails.
- Mode
- Cette zone affiche la variable WTW, elle peut être en
ttl
(take the last (prendre la dernière)) oultl
(let the last (laisser la dernière)). Voir la section Modes WTW pour plus de détails. - Temps écoulé
- Cette zone affiche le temps écoulé depuis le début de la partie.
Zone d'historique
La zone d'historique affiche la liste chronologique des actions des participants à la partie. Voir Raccourcis claviers pour voir comment interagir avec elle.
Zone du match
Cette partie affiche l'état actuel du jeu.
Raccourcis claviers
- n
- Recharger la partie avec les mêmes paramètres.
- p
- Arrêter le compteur et mettre le jeu en pause.
nombreu
- Annuler une (ou nombre) action(s).
numberr
- Refaire une (ou nombre) action(s) annulées.
- F8
- Afficher ou masquer le mode d'aide pour certaines variantes.
- ↓, j
- Revenir en arrière dans l'historique des commandes Ex.
- ↑, k
- Aller en avant dans l'historique des commandes Ex.
- ⇟, ALT-j
- Descendre dans l'historique.
- ⇞, ALT-k
- Remonter dans l'historique.
- ⇲, J, G
- Aller à la fin de l'historique.
- ⇱, K, gg
- Aller au début de l'historique.
- CTRL-↓, CTRL-j
- Descendre dans le menu d'aide à l'autocompletion en mode Ex.
- CTRL-↑, CTRL-k
- Monter dans le menu d'aide à l'autocompletion en mode Ex.
Commandes Ex
Les “Commandes Ex” correspondent à toutes les commandes commençant par les deux-points (:) qui sont généralement entrées dans la Zone des commandes. Ce genre de commandes permet de réaliser beaucoup de choses, et en particulier d'accéder aux fonctionnalités avancées. Certaines commandes ex, celles décrites dans la section Commandes sont destinées à un usage général et peuvent être utilisées dans toutes formes de situations. D'autres commandes Ex sont spécifiques à un mode de jeu en particulier et sont décrites dans la section Variantes.
Pour entrer en mode Ex, utilisez la touche deux-points (:) et un curseur apparaîtra dans la zone de commandes. Lorsque l'utilisateur commence à taper une commande, il peut obtenir à tout moment plus d'information à son propos avec la touche Tab qui initiera le mode d'autocomplétion.
Alors, le mode d'autocomplétion ouvre une boîte au dessus de la zone de commande, affichant une aide courte à propos de la commande entrée.
À tout moment le joueur peut masquer la boîte avec la touche Esc.
Commandes
Ces commandes peuvent être entrées à tout moment et sont affichées dans la zone de commandes et commandes-ex (qui commencent par le préfixe :
) en bas de l'écran.
:n
,:new
variante graine wtw
:n
,:new
Descripteur-
Démarre une nouvelle partie avec les options comme suit:
- variante
-
Le nom de la variante, qui peut être
trivial
(default),marienbad
,grundy
, ouwhythoff
. Voir la section Variantes pour plus de détails à propos de chaque variante. - graine
- La graine, elle représente le nombre de référence de la situation originelle de la partie. L'usage dépend de la variante choisie.
- wtw
-
Elle représente la condition pour gagner et peut prendre deux valeurs:
ttl
(take-the-last
) le joueur doit prendre la dernière allumette pour gagner ;ltl
(let-the-last
) le joueur doit forcer son opposant à prendre la dernière allumette pour gagner.
Il est aussi possible d'utiliser simplement le descripteur décrit dans la section Le descripteur de configuration.
:about
- Ouvrir l'écran de licences.
:colorsheme variante
- Changer le thème à celui de la variante.
:quit
,:q
, ZZ- Quitter le jeu.
:saveas
,:w
- Sauvegarder l'état actuel du jeu et le chronomètre dans un fichier.
:open
,:o
- Ouvrir une partie enregistrée
:rules
- Afficher les règles pour la variante en cours.
:help command
,:h command
- Obtenir de l'aide à propos d'une commande.
:tutor
- Ouvrir le mode tutoriel.
:tip
- Donner un indice.
Variantes
La syntaxe des actions à effectuer dans le jeu dépend principalement de la variante en cours. Dans tous les cas, il faut que vous soyez en mode normal, pour activer le mode normal, appuyez sur la touche ⎋.
Trivial (Par défaut)
Démarrage
Dans la variante triviale, il n'y a qu'une rangée d'allumettes, donc la graine définit exactement le nombre d'allumettes qu'il y aura dans cette rangée unique. La variante triviale n'a pas de mode avec assistant.
Règles
Dans la variante triviale, il y a une rangée de graine allumettes. À chaque tour, un joueur peut prendre une, deux ou trois allumettes dans la rangée.
Intreface et commandes
Lorsque le joueur execute une commande del, elle s'affiche dans la zone des raccourcis (Voir Zone des commandes), et ne prend pas effet jusqu'à ce qu'il appuie sur entrée.
Généralement, les allumettes prenables se distinguent par un ombrage et la dernière allumette a une couronne sur le dessus en mode TTL (prends la denrière) ou une tête de mort en LTL (laisse la dernière). Pour prendre des allumettes, il y a alors deux possibilités.
- -[1|3|3], [1|2|3]⏎
- Il est possible d'indiquer explicitement le nombre d'allumettes que vous voulez prendre, pour ce faire, tapez le nombre en question suivi de ⏎. Il est aussi possible de précéder ce nombre d'un signe moins. -.
- =NombreÀLaisser⏎
- Il est aussi possible d'indiquer le nombre d'allumettes que vous voulez laisser. Pour ce faire, il suffit de faire précéder ce nombre d'un signe égal =
Comment gagner ?
Si le joueur est en mesure de prendre la dernière allumette (c'est à dire si il reste trois allumettes maximum), les allumettes restantes s'affichent en train de bruler, il a alors gagné (en mode ttl) ou perdu (en mode ltl). La méthode d'affichage peut varier selon le thème.
Marienbad
Démarrage
Dans la variante Marienbad, la graine est le nombre de lignes. La ligne la plus haute a une allumette, à chaque ligne deux allumettes sont ajoutées. Nous pouvons calculer le nombre de colonnes en faisant “2×GRAINE-1”.
Par exemple, avec GRAINE=4, nous avons cette disposition:
0 | 1 | | | 2 | | | | | 3 | | | | | | | 0 1 2 3 4 5 6
Règles
Chaque joueur, lorsque son tour est venu peut prendre autant d'allumettes qu'il veut, la condition est qu'elles soient dans la même colonne. Le gagnant est déterminé par selon le choix de WTW à l'initialisation.
Intreface et commandes
Pour prendre des allumettes en mode Marienbad, il faut renseigner deux informations:
- Le numéro de la colonne.
- Le nombre d'allumettes à prendre (ou à laisser).
Deux syntaxes sont possibles:
- colonne=allumettes
- Ce qui laisse allumettes dans la colonne numéro colonne
- colonne-allumettes
- Ce qui supprime allumettes allumettes de la colonne numéro colonne.
Mode assistant (Spoiler)
ATTENTION: Cette section dévoile la solution. Lisez la seulement si vous avez du mal à résoudre le problème du mode Marienbad.
La variante Marienbad dispose d'un mode assistant pour aider le joueur à comprendre la solution mathématique de la stratégie pour gagner. En appuyant sur F8, une petite boite apparaît aved des indications.
La boite montre le total d'allumette et la représentation de ce nombre en binaire. La stratégie consiste à maintenir la valeur binaire de la somme des lignes à chaque tour.
Par exemple, au début d'une partie avec une graine de 4, l'assistant apparaîtra ainsi:
1 = 0 0 1 3 = 0 1 1 5 = 1 0 1 7 = 1 1 1 --------- T = 2 2 4
Le nombre 5 représente le total des allumettes de la ligne 3, la valeur en binaire est 101. T représente le total des valeurs binaires additionnées en décimal. Pour gagner, T doit rester constant à chaque tour.
Grundy
Démarrage
Dans la variante Grundy, il y a une seule ligne au démarrage, donc GRAINE est le nombre d'allumettes de cette ligne.
Rules
Ici, le joueur ne doit pas à prendre ou laisser la dernière allumette, le but est de diviser la ligne d'allumettes en deux lignes inégales. À chaque tour le joueur doit prendre une des lignes subsidiaires, et la diviser inégalement. Dans le mode ttl, le but est de faire que l'opposant ne réussisse pas à diviser un tas inégalement, dans le mode ltl, le but est de chercher à forcer l'adversaire à diviser inégalement le dernier tas possible.
Interface et commandes
Dans l'implémentation de Grundy sur openallumette, les lignes ont un identifiant (sauf la première, car lui donner un numéro est inutile). L'identifiant est créé à partir de l'identifiant de la ligne mère et celui de la ligne actuelle, séparées par un point “.”. Lorsque la première ligne est divisée, elle donne deux lignes référencées 0 et 1. Ensuite, lorsqu'une ligne avec un identifiant “N est divisée, elle donne deux autres lignes référencées sous N.0 et N.1.
Maintenant, si le joueur veut diviser une ligne avec l'identifiant id en deux lignes avec a et b allumettes (a+b=le nombre d'allumettes que contenait la ligne mère), il doit indiquer l'identifiant de la ligne et d'un des deux nombres a ou b. Il n'est pas nécessaire d'indiquer les deux termes puisque par soustraction, le second sera déduit à partir du total.
- ligne:a, ligne:a+b
- Divise la ligne identifiée par ligne en deux lignes filles avec a et b allumettes avec pour identifiants ligne.0 et ligne.1. Seul le premier terme est nécessaire, le second, facultatif.
Mode assistant
TODO
Wythoff
Démarrage
Dans la variante de Whytoff, il y a deux lignes avec le même nombre d'allumettes au départ, la graine définit le nombre d'allumettes par ligne.
Règles
Dans la variante de Whytoff, il y a deux lignes, et les joueurs ont deux actions possibles:
- Prendre le même nombre d'allumettes de chaque côté.
- Prendre autant d'allumettes qu'ils souhaitent d'un seul côté.
Interface et commandes
Les deux lignes sont nommées A et B. Selon si le joueur veut prendre des allumettes des deux côtés ou d'un seul, il y a deux commandes possibles:
- [-]allumettes
- Prendre allumettes allumettes de chaque ligne.
- ligne-allumettes
- Prendre matchs allumettes de la ligne ligne.
- ligne=allumettes
- Définir le nombre allumettes à la ligne ligne.
Descripteur de configuration
Le descripteur de configuration est un court fragment de texte qui décrit la configuration d'une partie de Nim, dont toutes ses variables. La forme générale est la suivante:
Joueur1 Variante;Grainte;wtw
Les variables sont définies de la manière suivante
- Joueur1
-
Décrit qui commence la partie.
+
pour l'humain ;-
pour l'ordinateur. Le joueur commence par défaut. - Variante
- Nom de la variante, voir la section Variantes pour les valeurs possibles.
- Graine
- La graine, elle dépend de la variante choisie.
- wtw
- Correspond à l'expression “What to (do to) win”. Voir la section Modes wtw pour plus de détails.
Par exemple le descripteur +Marienbad;26;ttl
correspond au jeu en cours dans la variante Marienbad, avec 26 lignes (donc 57 colonnes), le gagnant sera le joueur qui prendra la dernière allumette et le joueur humain commence.
Notez que l'ordre n'importe que peu. Open Allumette comprendra la commande, mais il est mieux de respecter l'odre canonique. En plus de celà, préciser qui commence est optionnel.
Modes wtw
La variable wtw (“What to (do to) win”) définit les conditions pour gagner. En général, dans le jeu de Nim classique, il y a deux possibilités, on peut définir le gagnant comme celui qui empêche son adversaire de jouer, c'est le mode "normal", on peut aussi définir le gagnant comme celui qui force son adversaire à faire la dernière action autorisée et possible.
Dans Open Allumette, le mode normal est appelé ttl
(pour 'take the last') et l'autre mode est appelé ltl
(pour 'let the last').
Le sens exact de ttl
et de ltl
dépend de la variable choisie. En général, ttl
signifie que le gagannt est le joeuur qui peut prendre la dernière allumette dans la partie et ltl
signifie que le gagnant est le joeuur qui sera forcé de prendre la dernière allumette.
Il y a cependant quelques exceptions avec la variante Grundy en particulier, où ttl
signifie que le but est de diviser la dernière ligne et ltl
signifie que l'on doit forcer l'adversaire à diviser la dernière ligne. Voir Grundy pour plus de détails.
Thème
Il est possible de changer le thème avec un autre ou d'en créer un nouveau avec du CSS.
Pour changer le thème, utiliser simplement l'argument --colorsheme
ou -c
, ou encore la commande ex :c[olorsheme]
. Alors, puis pointez sur un thème installé.
- Molokai
Bibliographie
Voici quelques ressources pour étudier et mieux comprendre le jeu de Nim.
- Variante de Grundy
-
- P. M. Grundy. Mathematics and Games. Eureka, vol.27, 1964.
- E. Berlekamp, J. H. Conway, and R. Guy. Winning Ways for your Mathematical Plays. Academic Press, 1982.
Captures d'écran
Vous pourrez découvrir de nombreuses captures d'écran sur le site officiel.
- Écran à propos
- Écran de victoire
- Écran de défaite
- Écran de pause
Installation
- Linux(es) et BSD
- TODO
- Windows
- TODO
Licence
Ce jeu, son manuel et tous les fichiers associés est distribué sous licence CC-BY-SA 3.0.
Auteur
La majorité de Open Allumette a été écrite par Fauve (aka Idriss al Idrissi) http://taniere.info et peut être retrouvé sur Github à cette adresse https://github.com/FauveNoir/.
Le manuel a été traduit en Français par Nazmi, voir ma page de traducteur: http://nazmi.fr/trans/.