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.
- 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).
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
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.
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.
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
- 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) où 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).