Aller au contenu principal

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.

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.json pour les bindings personnalisĂ©s par joueur.

La logique typique est :

  1. Pygame remonte un événement KEYDOWN / KEYUP.
  2. controls.py le traduit en action (par ex. MOVE_UP_PLAYER_1).
  3. GameState consomme 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.