More docs #147
| @@ -3,13 +3,6 @@ Gestion de l'affichage | ||||
|  | ||||
| .. _curses: https://docs.python.org/3/howto/curses.html | ||||
|  | ||||
| L'intégralité de l'affichage du jeu est géré grâce à la bibliothèque native de | ||||
| Python curses_. | ||||
|  | ||||
|  | ||||
| .. warning:: | ||||
|   Plus de documentation à venir. | ||||
|  | ||||
|  | ||||
| .. toctree:: | ||||
|    :maxdepth: 3 | ||||
| @@ -19,3 +12,51 @@ Python curses_. | ||||
|    map | ||||
|    stats | ||||
|    logs | ||||
|  | ||||
| L'intégralité de l'affichage du jeu est géré grâce à la bibliothèque native de Python curses_. | ||||
|  | ||||
| Initialisation du terminal | ||||
| -------------------------- | ||||
|  | ||||
| Au lancement du jeu, le terminal est initialisé, les caractères spéciaux sont traduits en abstraction curses, les | ||||
| caractères tapés par l'utilisateur ne sont plus affichés sur le terminal, on envoie les touches tapées à curses en | ||||
| permanence sans avoir à taper sur Entrée, le curseur est rendu invisible, on active le support des couleurs et enfin | ||||
| on déclare vouloir attraper tous les clics de souris. Tout cela est fait dans un contexte Python, qui permet | ||||
| d'effectuer les opérations inverses lors de la fermeture du programme, même en cas de crash, afin de retrouver un | ||||
| terminal utilisable. | ||||
|  | ||||
|  | ||||
| Pads | ||||
| ---- | ||||
|  | ||||
| Chaque morceau d'affichage est géré dans un *pad*. Un pad est un objet défini par curses, représentant une sous-fenêtre, | ||||
| qui a l'avantage d'être un peu plus flexible qu'une simple fenêtre. Un pad peut en effet dépasser de l'écran, et on | ||||
| peut choisir où placer le coin avant gauche et quelle partie du pad il faut dessiner sur la fenêtre. | ||||
|  | ||||
| Ce projet implémente une couche d'abstraction supplémentaire, afin d'avoir des objets plus utilisables. Chaque partie | ||||
| d'affichage est réprésentée dans une classé étendant ``Display``. Chaque ``Display`` contient un (ou plusieurs) pads, | ||||
| et propose une surcouche de certaines fonctions de curses. | ||||
|  | ||||
| L'affichage de texte par exemple sur un pad est plus sécurisée que celle proposée par curses. Le comportement par défaut | ||||
| est d'afficher un message à partir d'une position donnée avec des attributs (gras, couleur, ...) donnés sous | ||||
| forme numérique. Cette implémentation permet de passer les attributs voulus sous forme de paramètres booléens, de | ||||
| choisir la couleur de front/de fond sans définir de paire curses, mais surtout de tronquer le texte à la place | ||||
| disponible, afin de ne pas avoir à se soucier d'avoir un message trop grand et éviter des crashs non désirés. | ||||
|  | ||||
| Les ``Display`` sont gérés par un ``DisplayManager``. C'est lui qui décide, en fonction de l'état actuel du jeu, | ||||
| d'afficher les bons ``Display`` aux bons endroits et de les redimensionner correctement en fonction de la taille du | ||||
| terminal. C'est aussi lui qui propage l'information de modifier les attributs d'un ``Display``, si par exemple | ||||
| l'inventaire du joueur a été mis à jour. | ||||
|  | ||||
| Il s'occupe enfin de tout redimensionner si jamais le terminal a changé de taille, après une intervention | ||||
| de l'utilisateur. | ||||
|  | ||||
|  | ||||
| Interactions avec la souris | ||||
| --------------------------- | ||||
|  | ||||
| Le jeu attrape les clics de souris. C'est le ``DisplayManager``, connaissant l'état du jeu et ce qui est affiché à | ||||
| quel endroit, qui va chercher sur quel ``Display`` on a cliqué. L'information est propagée au bon ``Display``, en | ||||
| adaptant les coordonnées. | ||||
|  | ||||
| Tout ``Display`` qui contient un menu procède de la même façon pour propager l'information au bon menu. | ||||
|   | ||||
| @@ -1,4 +1,7 @@ | ||||
| Affichage de l'historique | ||||
| ========================= | ||||
|  | ||||
| L'historique des actions est affiché en bas de l'écran. À chaque action d'une entité, comme frapper quelqu'un, ou lorsque le joueur parle à une entité, cela s'affiche dans l'historique. | ||||
| L'historique des actions est affiché en bas de l'écran. À chaque action d'une entité, comme frapper quelqu'un, | ||||
| ou lorsque le joueur parle à une entité, cela s'affiche dans l'historique. | ||||
|  | ||||
| Il est affiché sur l'écran de jeu, en bas à gauche, occupant 1/5 de la hauteur et 4/5 de la largeur. | ||||
|   | ||||
| @@ -1,6 +1,13 @@ | ||||
| Affichage de la carte | ||||
| ===================== | ||||
|  | ||||
| La carte s'affiche dans la partie en haut à gauche de l'écran, sur la plus grande partie de l'écran. On affiche les tuiles une par une, selon le texture pack sélectionné. La map est actualisée à chaque action d'une entité.  | ||||
| La carte s'affiche dans la partie en haut à gauche de l'écran, sur la plus grande partie de l'écran. | ||||
| On affiche les tuiles une par une. Selon le pack de textures utilisé, les tuiles prennent un ou deux caractères de large. | ||||
| Selon la visibilité de la case en fonction de la position du joueur, la couleur de la case sera plus ou moins sombre, | ||||
| voire masquée si le joueur n'a jamais vu la case. Les entités sont ensuite affichées, si elles sont dans le champ de | ||||
| vision du joueur. | ||||
|  | ||||
| L'afffichage de la carte suit les déplacements du joueur. | ||||
| La carte est actualisée lorsque cela est nécessaire, à chaque tick de jeu. | ||||
|  | ||||
| L'afffichage de la carte suit les déplacements du joueur, dans le sens où la caméra est toujours centrée sur lui. | ||||
| La carte prend 4/5 de l'affichage aussi bien en largeur qu'en hauteur. | ||||
|   | ||||
| @@ -2,13 +2,16 @@ Affichage des menus | ||||
| =================== | ||||
|  | ||||
| Les menus sont affichés dans une boîte. On peut naviguer dedans avec les flèches haut et bas, | ||||
| et valider avec la touche entrée. | ||||
| et valider avec la touche entrée. Il est également possible d'intéragir avec la souris. | ||||
|  | ||||
| Il y a plusieurs menus dans le jeu : | ||||
|  | ||||
| * Le main menu, qui s'affiche au lancement du jeu. | ||||
| * Le menu des paramètres : si on sélectionne un choix de touche et qu'on appuie sur entrée, on peut ensuite appuyer sur une touche pour remplacer la touche utilisée. | ||||
| * Le menu des crédits : ce menu fonctionne avec la souris. En cliquant on affiche une image. | ||||
| * Le menu d'inventaire : dans l'inventaire, on peut utiliser les touches pour utiliser un item ou l'équiper... | ||||
| * Le menu de vente : on peut utiliser les touches gauche et droite pour switcher entre l'inventaire du joueur et celui du marchand. | ||||
| * Menu des warnings : Pas vraiment un menu, mais affiche juste un message dans une petite boite pour prévenir le joueur que quelquechose ne va pas. | ||||
| * **Le menu principal**, qui s'affiche au lancement du jeu. | ||||
| * **Le menu des paramètres** : si on sélectionne un choix de touche et qu'on appuie sur entrée, | ||||
|   on peut ensuite appuyer sur une touche pour remplacer la touche utilisée. | ||||
| * **Le menu des crédits** : ce menu fonctionne avec la souris. En cliquant on affiche une image. | ||||
| * **Le menu d'inventaire** : dans l'inventaire, on peut utiliser les touches pour utiliser un item ou l'équiper... | ||||
| * **Le menu de vente** : on peut utiliser les touches gauche et droite pour switcher entre l'inventaire du joueur | ||||
|   et celui du marchand. | ||||
| * **Menu des warnings** : Pas vraiment un menu, mais affiche juste un message dans une petite boite pour prévenir | ||||
|   le joueur que quelque chose ne va pas. | ||||
|   | ||||
| @@ -4,7 +4,7 @@ Affichage des statistiques | ||||
| .. _Hazel: ../index.html | ||||
|  | ||||
| Les statistiques du joueur sont affichées en haut à droite de l'écran | ||||
| et séparées du reste de l'affichage par une barre verticale. | ||||
| et séparées du reste de l'affichage par une barre verticale, occupant 1/5 de la place horizontale. | ||||
|  | ||||
| Les informations affichées sont : | ||||
|  | ||||
| @@ -24,3 +24,8 @@ Les informations affichées sont : | ||||
| * **Equipped helmet** - le casque porté par le joueur. | ||||
| * **Hazel** - le nombre d'Hazel_ que le joueur possède. | ||||
| * **Vous êtes mort** - Éventuellement, si le joueur est mort. | ||||
|  | ||||
| Si le joueur possède un `monocle <../entities/items.html#monocle>`_, alors les statistiques d'une entité proche sont | ||||
| également affichées dessous. | ||||
|  | ||||
| Des aides de jeu peuvent enfin être affichées en bas, telles que la touche sur laquelle il faut appuyer. | ||||
|   | ||||
| @@ -42,13 +42,21 @@ En interagissant avec un marchand, il est possible de lui acheter et de lui | ||||
| vendre différents objets contre des Hazels, la monnaie du jeu. | ||||
| Les prix sont fixés : | ||||
|  | ||||
| * Anneau de coup critique : 15 Hazels | ||||
| * Anneau d'expérience : 25 Hazels | ||||
| * Arc : 22 Hazels | ||||
| * Baguette de feu : 36 Hazels | ||||
| * Bombe : 4 Hazels | ||||
| * Coeur : 3 Hazels | ||||
| * Potion d'arrachage de corps : 14 Hazels | ||||
| * Épée : 20 Hazels | ||||
| * Bouclier : 16 Hazels | ||||
| * Casque : 18 Hazels | ||||
| * Coeur : 3 Hazels | ||||
| * Épée : 20 Hazels | ||||
| * Monocle : 10 Hazels | ||||
| * Parchemin de dégâts : 18 Hazels | ||||
| * Parchemin de faiblesse : 13 Hazels | ||||
| * Plastron : 30 Hazels | ||||
| * Potion d'arrachage de corps : 14 Hazels | ||||
| * Règle : 2 Hazels | ||||
|  | ||||
| Le marchand commence avec 75 Hazels en sa possession, contre 42 pour le joueur. | ||||
|  | ||||
| @@ -59,11 +67,11 @@ Dans le `pack de textures`_ écureuil, il est représenté par l'émoji ``🦜`` | ||||
| Trompette | ||||
| --------- | ||||
|  | ||||
| Son nom est fixé à 'trumpet'. Une trompette est un familier, c'est à dire que | ||||
| Son nom est fixé à `trumpet`. Une trompette est un familier, c'est à dire que | ||||
| c'est une entité attaquante qui suit globalement le joueurs et attaque les monstres | ||||
| qui se rapprochent trop du joueur. | ||||
|  | ||||
| Elle a 20 point de vie et une attaque de 3. | ||||
| Elle a 20 points de vie et une attaque de 3. | ||||
|  | ||||
| Dans le `pack de textures`_ ASCII, elle est représentée par le caractère ``/``. | ||||
|  | ||||
|   | ||||
| @@ -103,8 +103,10 @@ Il est représenté par les caractères ``0`` et ``⛑️``. | ||||
| Plastron | ||||
| -------- | ||||
|  | ||||
| Le plastron est un type d'armure que l'on peut trouver uniquement par achat auprès d'un marchand pour le coût de 30 Hazels ou dans un coffre. Il s'équippe sur le corps. | ||||
| Une fois équipé, le casque ajoute 4 de constitution à son porteur, lui permettant de prendre moins de dégâts. | ||||
| Le plastron est un type d'armure que l'on peut trouver uniquement par achat | ||||
| auprès d'un marchand pour le coût de 30 Hazels ou dans un coffre. Il s'équippe sur le corps. | ||||
| Une fois équipé, le casque ajoute 4 de constitution à son porteur, | ||||
| lui permettant de prendre moins de dégâts. | ||||
|  | ||||
| Il est représenté par les caractères ``(`` et ``🦺``. | ||||
|  | ||||
| @@ -123,6 +125,18 @@ Il y a plusieurs types d'anneaux : | ||||
|  | ||||
| Un anneau est représenté par les caractères ``o`` et ``💍``. | ||||
|  | ||||
| Monocle | ||||
| ------- | ||||
|  | ||||
| L'anneau est un objet que l'on peut trouver uniquement par achat auprès d'un | ||||
| marchand pour le prix de 10 Hazels. On peut le trouver sinon dans les coffres. | ||||
| Il s'équippe sur la main secondaire. | ||||
|  | ||||
| Une fois porté, il permet de voir les caractéristiques des entités voisines | ||||
| (nom, force, chance de critique, ...). | ||||
|  | ||||
| Un monocle est représenté par les caractères ``ô`` et ``🧐``. | ||||
|  | ||||
| Parchemin | ||||
| --------- | ||||
|  | ||||
|   | ||||
| @@ -521,7 +521,7 @@ class ScrollofWeakening(Item): | ||||
|         self.held_by.inventory.remove(self) | ||||
|  | ||||
|  | ||||
| class LongRangeWeapon(Item): | ||||
| class LongRangeWeapon(Weapon): | ||||
|     def __init__(self, damage: int = 4, | ||||
|                  rang: int = 3, *args, **kwargs): | ||||
|         super().__init__(*args, **kwargs) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user