Rendu & entrées (rendering/, input/)
Cette page décrit comment le jeu gère l’affichage et les entrées côté développeur.
Rendu (rendering/)​
Le dossier rendering/ contient les différents renderers responsables de ce qui est affiché à l’écran.
camera.py​
Gère la caméra :
- position et suivi des joueurs ;
- éventuel zoom ;
- transformation des coordonnées du monde vers l’écran.
La caméra est ensuite utilisée par le renderer principal (souvent un split‑screen) pour dessiner correctement la carte et les entités.
inventory_menu.py​
Affiche et gère le menu d’inventaire :
- liste des éléments présents dans l’inventaire du joueur ;
- navigation entre les slots ;
- feedback visuel (sélections, barres de stock, états d’équipement).
Ce renderer lit l’état de l’inventaire dans game/inventory.py et dans GameState.
keybind_menu.py​
Interface pour afficher / modifier les raccourcis clavier/manette :
- liste des actions disponibles ;
- touches associées à chaque action ;
- logique de rebind en jeu (attente d’une nouvelle touche, vérification des conflits).
Il s’appuie sur input/controls.py et sur le fichier keybindings.json pour lire/écrire les bindings.
menu.py​
Menus principaux du jeu :
- écran de titre ;
- menu JOUER / TOUCHES / QUITTER ;
- éventuellement gestion du fond vidéo (
background-menu.mp4) et des animations de fond.
Ce module orchestre la navigation entre les différents écrans (configuration des joueurs, lancement de la partie, retour menu…).
split_screen.py​
Gère le split‑screen pour plusieurs joueurs sur la même machine :
- séparation de l’écran en plusieurs vues (gauche/droite) ;
- association d’une caméra par joueur ;
- synchronisation du rendu de chaque vue avec l’état de
GameState.
Si tu veux ajouter un troisième joueur ou un autre layout d’écran, c’est un point de passage probable.
Entrées (input/)​
controls.py​
Module central de gestion des contrĂ´les :
- lecture des événements d’entrée (clavier, manette) fournis par Pygame ;
- mapping entre touches et actions haut niveau (se déplacer, interagir, attaquer, ouvrir l’inventaire, lancer un sabotage, etc.) ;
- prise en compte de
keybindings.jsonpour les bindings personnalisés par joueur.
La logique typique est :
- Pygame remonte un événement
KEYDOWN/KEYUP. controls.pyle traduit en action (par ex.MOVE_UP_PLAYER_1).GameStateconsomme ces actions pour mettre à jour la position des joueurs, déclencher des interactions ou des mini‑jeux.
keybindings.json​
Fichier de configuration qui stocke les touches par défaut et les overrides choisis via le menu des touches :
- un mapping par joueur ;
- un mapping par action (Haut, Bas, Attaque, Sabotage, Inventaire, etc.) ;
- format JSON simple pour être facilement éditable et versionnable.
Le menu des touches modifie ce fichier, et controls.py le recharge pour appliquer les changements.