mpa

Page

Une page est simplement une liste de choix, assortie d’une éventuelle fin (victoire, défaite, ou entre les deux).

class jouets.mpa.graphe.Page(choix: Collection[Choix] = <factory>, fin: typing.Optionnal[str] = None, roues: typing.Optionnal[dict] = <factory>, descriptions: dict = <factory>)[source]

Une page, qui contient plusieurs choix.

choix: Collection[Choix]

Liste des choix possibles

descriptions: dict

Éventuelles descriptions pour les codes

fin: Optionnal[str] = None

Si None, le livre n’est pas terminé. Sinon, indique la fin (victoire, défaite, ni l’une ni l’autre).

iter_pages(*, fait: set = None)[source]

Itère sur l’ensemble des pages de l’histoire.

Paramètres:

fait (set) – Ensemble des pages déjà renvoyées (qui ne le seront pas à nouveau)

roues: Optionnal[dict]

Éventuelles valeurs de départ pour les roues. Cela n’a de sens que pour le début du livre.

Choix

Un choix a davantage d’attributs, dont les effets et les conditions.

class jouets.mpa.graphe.Choix(code: str, cible: ~jouets.mpa.graphe.Page, condition: ~typing.Callable = <jouets.mpa.graphe.ConditionVrai object>, effet: ~typing.Callable = <jouets.mpa.graphe.EffetRien object>)[source]

Une alternative possible lors d’un choix

cible: Page

Page à laquelle on va si on fait ce choix.

code: str

Code qui sera utilisé pour ce choix lorsque les histoires seront affichées.

condition: Callable = <jouets.mpa.graphe.ConditionVrai object>

Condition pour pouvoir faire ce choix. Par défaut, aucune condition n’est requise.

effet: Callable = <jouets.mpa.graphe.EffetRien object>

Effet si ce choix est effectué. C’est un des attributs de Effet. Par exemple, effet = Effet.affecte(vert="bouclier") signifie : « Mettre le bouclier sur la roue verte ».

Effets

Les effets à appliquer en tournant les pages (« Ajoute le marteau sur la roue jaune », « Ajoute une relique sur la roue verte », etc.) :

jouets.mpa.graphe.Effet = namespace(rien=<class 'jouets.mpa.graphe.EffetRien'>, ajoute=<class 'jouets.mpa.graphe.EffetAjoute'>, affecte=<class 'jouets.mpa.graphe.EffetAffecte'>, affecteSiVide=<class 'jouets.mpa.graphe.EffetAffecteSiVide'>, et=<class 'jouets.mpa.graphe.EffetEt'>)

Effets pouvant être appliqués.

class jouets.mpa.graphe.EffetAffecte(**kwargs)[source]

Affecte des choses aux roues.

Par exemple, EffetAffecte(bleu= »marteau ») ajoute un marteau à la roue bleue.

class jouets.mpa.graphe.EffetAffecteSiVide(**kwargs)[source]

Affecte des choses aux roues, si elles sont vides.

Par exemple, EffetAffecteSiVide(bleu= »marteau ») ajoute un marteau à la roue bleue, si la roue ne contenait rien (clef absente du dictionnaire, ou valeur égale à None).

class jouets.mpa.graphe.EffetAjoute(**kwargs)[source]

Ajoute une valeur à une des roues.

class jouets.mpa.graphe.EffetRien[source]

Ne fait rien.

class jouets.mpa.graphe.EffetEt(*args)[source]

Applique plusieurs effets.

Conditions

Des conditions à vérifier (« Il y a un ou deux bobos », « Tu es le personnage Lina », « Tu as les chaussons ou tu es Sachat », etc.) sont construites à partir des fonctions suivantes.

jouets.mpa.graphe.Condition = namespace(compte=<class 'jouets.mpa.graphe.ConditionCompte'>, non=<class 'jouets.mpa.graphe.ConditionNon'>, ou=<class 'jouets.mpa.graphe.ConditionOu'>, et=<class 'jouets.mpa.graphe.ConditionEt'>, roue=<class 'jouets.mpa.graphe.ConditionRoue'>, vrai=<class 'jouets.mpa.graphe.ConditionVrai'>, intervalle=<class 'jouets.mpa.graphe.ConditionIntervalle'>)

Conditions à vérifier pour être autorisé·e à faire ce choix

class jouets.mpa.graphe.ConditionCompte(valeur: str, inf: Number = -inf, sup: Number = inf)[source]

Le nombre de roues ayant une certaine valeur est comprise dans l’intervalle.

Par exemple, Condition.compte("bobo", inf=2) signifie qu’au moins deux roues ont la valeur "bobo".

class jouets.mpa.graphe.ConditionNon(condition: _Condition)[source]

Vérifie que la condition n’est pas satisfaite.

class jouets.mpa.graphe.ConditionOu(*args)[source]

L’une des conditions données en argument est vérifiée.

class jouets.mpa.graphe.ConditionEt(*args)[source]

Toutes les conditions données en argument sont vérifiées.

class jouets.mpa.graphe.ConditionRoue(**kwargs)[source]

Les roues contiennent tous les objets donnés en argument.

Par exemple, _Condition.roue(jaune="chaussons", rouge="Lina") vérifie que - les chaussons sont sur la roue jaune, et - le personnage de la roue rouge est Lina.

class jouets.mpa.graphe.ConditionVrai[source]

Cette condition est toujours vérifiée.

class jouets.mpa.graphe.ConditionIntervalle(roue: str, inf: float = -inf, sup: float = inf)[source]

Vérifie que la valeur d’une roue est comprise dans l’intervalle donné

Histoire

Cet objet représente une des histoires possibles (choisir le premier personnage, tourner la page du milieu, tourner deux pages, etc.).

class jouets.mpa.graphe.Histoire(début, *, roues=None, codes=None)[source]

Un récit d’une histoire

applique(choix)[source]

Applique le choix, et renvoit le nouvel objet Histoire.

fins()[source]

Renvoie sur toutes les fins possibles

histoires()[source]

Itère sur toutes les histoires possibles.

property page

Renvoit la page actuelle, c’est-à-dire la dernière page visitée.

proba(fin: str, préfixe: Optionnal(list[str]) = None)[source]

Calcule la probabilité d’obtenir la fin donnée en argument.

suivantes(*, préfixe=None, condition=False)[source]

Itère l’étape suivantes des histoires

  • N’effectue que les choix possibles

  • Applique les effets

  • Ne fait qu’un seul choix (des appels récursifs à cette fonction sont nécessaires pour continuer à avancer).

Paramètres:
  • condition (bool) – Si vrai, itère des tuples (Histoire, Condition)Histoire est l’histoire suivante, et Condition est la condition qui a été vérifiée pour mener à cette histoire. Sinon, n’itère que les histoires.

  • préfixe (Conditionnal[list[str]]) – Éventuelle liste des choix déjà faits (les autres choix sont ignorés).