Add documentation for entities

This commit is contained in:
Yohann D'ANELLO 2020-11-19 21:14:56 +01:00
parent be6252881f
commit 3662d482d3
4 changed files with 221 additions and 1 deletions

View File

@ -7,4 +7,73 @@ Entités
player
monsters
items
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.

View File

@ -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 ``💜``.

View File

@ -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 ``🧸``.

View File

@ -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.