From 3662d482d36eb1e26b1e58b918e4736f192e4f38 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Thu, 19 Nov 2020 21:14:56 +0100 Subject: [PATCH] Add documentation for entities --- docs/entities/index.rst | 71 +++++++++++++++++++++++++++++++++++++- docs/entities/items.rst | 48 ++++++++++++++++++++++++++ docs/entities/monsters.rst | 53 ++++++++++++++++++++++++++++ docs/entities/player.rst | 50 +++++++++++++++++++++++++++ 4 files changed, 221 insertions(+), 1 deletion(-) diff --git a/docs/entities/index.rst b/docs/entities/index.rst index d8392ed..1d63bbf 100644 --- a/docs/entities/index.rst +++ b/docs/entities/index.rst @@ -7,4 +7,73 @@ Entités player monsters - items \ No newline at end of file + items + +Entité +------ + +Une entité est un élément placé sur la carte. Ce peut être le joueur, un monstre +ou bien un objet sur la carte. Chaque entité dispose des attributs suivants : + +* ``name: str`` + + Il s'agit du type de l'entité. + +* ``y: int`` +* ``x: int`` + + Cela représente les coordonnées de l'entité sur la carte. + +* ``map: Map`` + + Il s'agit de la carte sur laquelle est placée l'entité. + +.. _objet: items.html + +Il existe à l'heure actuelle deux types d'entité : une `entité attaquante`_ ou +bien un objet_. + + +Entité attaquante +----------------- + +.. _monstre: monsters.html +.. _joueur: player.html + +Une entité attaquante (``FightingEntity``) est un type d'entités représentant +les personnages présents sur la carte, pouvant alors se battre. Ce peut être +un monstre_ ou bien le joueur_. + +Elles disposent toutes, en plus des paramètres d'entité, des attributs suivants : + +* ``maxhealth: int`` + + Représente la vie maximale de l'entité, qui est aussi la vie de départ. + +* ``health: int`` + + Représente la vie actuelle de l'entité. + +* ``strength: int`` + + Représente la force de l'entité, le nombre de dégâts à faire à chaque coup. + +* ``intelligence: int`` +* ``charisma: int`` +* ``dexterity: int`` +* ``constitution: int`` + + Tous ces paramètres sont des statistiques de l'entité, n'ayant pas de réelle + influence pour le moment. + +* ``level: int`` + + Niveau de l'entité. + +Chaque type d'entité disposera de ses propres attributs de départ. + +On considère une entité comme morte à partir du moment où sa vie descend +en-dessous de 0 point de vie. À ce moment-là, l'entité est retirée de la carte. + +Lorsqu'une entité en frappe une autre, celle-ci inflige autant de dégâts qu'elle +n'a de force, et autant de points de vie sont perdus. diff --git a/docs/entities/items.rst b/docs/entities/items.rst index 0f8b42d..521ca91 100644 --- a/docs/entities/items.rst +++ b/docs/entities/items.rst @@ -1,2 +1,50 @@ Objets ====== + +.. _joueur: player.html +.. _pack de textures: ../texture_pack.html + +Un objet est une entité présente sur la carte que le joueur_ peut ramasser. +Il lui suffit pour cela de s'approcher, et une fois sur la case de l'objet, +celui-ci est placé dans l'inventaire. + +Un objet dispose de deux paramètres : + +* ``held: bool`` + + Indique si l'objet est placé dans l'inventaire ou s'il est au sol. + +* ``held_by: Optional[Player]`` + + Si l'objet est dans l'inventaire, renvoie son propriétaire. + + +Deux types d'objets sont pour l'instant présents : + + +Bombe +----- + +.. _entités attaquantes: index.html#entite-attaquante + +Une bombe est un objet que l'on peut ramasser. Une fois ramassée, elle est placée +dans l'inventaire. Le joueur peut ensuite lâcher la bombe, qui fera alors +3 dégâts à toutes les `entités attaquantes`_ situées à moins de une case. + +Elle est représentée dans le `pack de textures`_ ASCII par le caractère ``o`` +et dans le `pack de textures`_ écureuil par l'émoji ``💣``. + +.. note:: + + La gestion de l'inventaire n'ayant pas encore été implémentée, il n'est à + l'heure actuelle pas possible de lancer une bombe. + + +Cœur +---- + +Une cœur est un objet que l'on ne peut pas ramasser. Dès que le joueur s'en +approche, il est régénéré automatiquement de 3 points de vie, et le cœur disparaît. + +Elle est représentée dans le `pack de textures`_ ASCII par le caractère ``❤`` +et dans le `pack de textures`_ écureuil par l'émoji ``💜``. diff --git a/docs/entities/monsters.rst b/docs/entities/monsters.rst index 0dcfb1e..b719c1b 100644 --- a/docs/entities/monsters.rst +++ b/docs/entities/monsters.rst @@ -1,2 +1,55 @@ Monstres ======== + +.. _`entité attaquante`: index.html#entites-attaquantes +.. _`pack de textures`: ../texture-pack.html + +Chaque monstre est une `entité attaquante`_, et hérite donc de ses attributs. + +À chaque tick de jeu, chaque monstre se déplace d'une case, si possible. +Si le monstre est loin du joueur, ce déplacement est fait aléatoirement. +Sinon, si le monstre est à moins de 5 cases du joueur, alors il se dirige +au plus vite sur le joueur pour le frapper selon l'algorithme de Dijkstra, +et s'il est suffisamment proche frappe le joueur et lui fait autant de dégâts +qu'il n'a de force. + +On dénombre actuellement 4 types de monstres : + +Hérisson +-------- + +Son nom est fixé à `hedghog`. Il a par défaut une force à **3** et **10** points de vie. + +Dans le `pack de textures`_ ASCII, il est représenté par le caractère ``*``. + +Dans le `pack de textures`_ écureuil, il est représenté par l'émoji ``🦔``. + + +Castor +------ + +Son nom est fixé à `beaver`. Il a par défaut une force à **2** et **20** points de vie. + +Dans le `pack de textures`_ ASCII, il est représenté par le caractère ``_``. + +Dans le `pack de textures`_ écureuil, il est représenté par l'émoji ``🦫``. + + +Lapin +----- + +Son nom est fixé à `rabbit`. Il a par défaut une force à **1** et **15** points de vie. + +Dans le `pack de textures`_ ASCII, il est représenté par le caractère ``Y``. + +Dans le `pack de textures`_ écureuil, il est représenté par l'émoji ``🐇``. + + +Nounours +-------- + +Son nom est fixé à `teddy_bear`. Il n'a pas de force et **50** points de vie. + +Dans le `pack de textures`_ ASCII, il est représenté par le caractère ``8``. + +Dans le `pack de textures`_ écureuil, il est représenté par l'émoji ``🧸``. diff --git a/docs/entities/player.rst b/docs/entities/player.rst index 5a56870..3b115d4 100644 --- a/docs/entities/player.rst +++ b/docs/entities/player.rst @@ -1,2 +1,52 @@ Joueur ====== + +.. _`entité attaquante`: index.html#entites-attaquantes +.. _`paramètres`: ../settings.html +.. _`pack de textures`: ../texture-pack.html +.. _`objet`: items.html + +Le joueur est une `entité attaquante`_, contrôlée par l'utilisateur humain. + +Il est représenté dans le `pack de textures`_ ASCII par le caractère ``@``, +et dans le `pack de textures`_ écureuil par le fameux émoji écureuil ``🐿``. + +En plus des attributs d'une `entité attaquante`_, le joueur dispose des atrributs +supplémentaires : + +* ``current_xp: int`` + + Correspond à l'expérience accumulée par le joueur depuis le dernier niveau obtenu. + +* ``max_xp: int`` + + Expérience requise au joueur pour changer de niveau. Vaut 10 fois le niveau actuel. + +* ``inventory: List[Item]`` + + Contient l'ensemble des objets détenus par le joueur. + + +Déplacement +----------- + +Selon les paramètres_, il est possible de bouger le joueur dans les 4 directions +en appuyant sur ``z``, ``q``, ``s``, ``d`` ou sur les flèches directionnelles. + +Le joueur se retrouvera bloqué s'il avance contre un mur. Si il avance sur un +objet_, alors il prend l'objet_ et avance sur la case. + +S'il rencontre une autre `entité attaquante`_, alors il frappe l'entité en +infligeant autant de dégâts qu'il n'a de force. À chaque fois qu'une entité est +tuée, le joueur gagne aléatoirement entre 3 et 7 points d'expérience. + + +Expérience +---------- + +À chaque monstre tué, le joueur gagne entre 3 et 7 points d'expérience aléatoirement. +Lorsque le joueur atteint la quantité d'expérience requise pour monter de niveau, +le joueur gagne un niveau, regagne toute sa vie, consomme son expérience et la +nouvelle quantité d'expérience requise est 10 fois le niveau actuel. De plus, +entre 5 et 10 fois le niveau actuel entités apparaissent aléatoirement sur la +carte à la montée de niveau.