Add documentation for entities
This commit is contained in:
parent
be6252881f
commit
3662d482d3
|
@ -7,4 +7,73 @@ Entités
|
||||||
|
|
||||||
player
|
player
|
||||||
monsters
|
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.
|
||||||
|
|
|
@ -1,2 +1,50 @@
|
||||||
Objets
|
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 ``💜``.
|
||||||
|
|
|
@ -1,2 +1,55 @@
|
||||||
Monstres
|
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 ``🧸``.
|
||||||
|
|
|
@ -1,2 +1,52 @@
|
||||||
Joueur
|
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.
|
||||||
|
|
Loading…
Reference in New Issue