Aller au contenu principal

Modules de gameplay (game/)

Le dossier game/ contient la majeure partie de la logique métier de SnackAnarchy.
Cette page résume le rôle de chaque fichier important et indique où étendre le jeu.

animation.py​

Gère les animations :

  • sprites animĂ©s (clients, joueurs, Ă©lĂ©ments de dĂ©cor) ;
  • gestion des Ă©tats d’animation (marche, idle, attaque, etc.).

Tu touches Ă  ce module si tu ajoutes :

  • de nouveaux sprites animĂ©s,
  • de nouveaux Ă©tats visuels pour des entitĂ©s existantes.

assets_loader.py​

Responsable du chargement des ressources :

  • images / sprites (PNG, etc.) ;
  • cartes Tiled (.tmx) ;
  • sons et musiques ;
  • vidĂ©os Ă©ventuelles (comme le fond du menu).

Objectifs :

  • centraliser le chargement pour Ă©viter les duplicata en mĂ©moire ;
  • uniformiser les chemins et formats d’assets ;
  • proposer une API simple pour les autres modules (get_sprite("player1"), etc.).

audio.py​

Gère l’audio du jeu :

  • musiques d’ambiance (music_ambient.wav) ;
  • effets sonores (prise de commande, rĂ©ussite/Ă©chec, sabotages, fin de partie…) ;
  • fonctions utilitaires pour jouer/arrĂŞter/changer de piste.

Pour ajouter un nouveau son :

  • place le fichier dans assets/ (sous-dossier audio) ;
  • ajoute son chargement dans assets_loader.py (si nĂ©cessaire) ;
  • dĂ©clenche-le depuis audio.py ou directement depuis les modules de gameplay.

client.py​

Définit la logique des clients :

  • reprĂ©sentation des Ă©tats (arrivĂ©e, attente, servi, en colère, parti, mort) ;
  • association d’un client Ă  une commande (plat) ;
  • mise Ă  jour de la patience et de la satisfaction ;
  • interactions avec les joueurs (service, meurtre, sabotage).

En pratique, GameState manipule des instances de client pour :

  • les placer dans la bonne file d’attente ;
  • dĂ©clencher la fin de vie (service rĂ©ussi, fuite, mort).

dishes.py​

Décrit les plats disponibles :

  • nom du plat ;
  • ingrĂ©dients requis ;
  • Ă©ventuelles mĂ©tadonnĂ©es (temps de prĂ©paration, type de plat…).

C’est le bon endroit pour :

  • ajouter un nouveau plat : dĂ©finir sa recette et l’intĂ©grer Ă  RECIPES dans inventory.py ;
  • ajuster l’équilibrage (ingrĂ©dients plus ou moins coĂ»teux/rares).

equipment.py​

Gère les équipements des restaurants :

  • friteuse, broche, caisse, toilettes, etc. ;
  • Ă©tats possibles :
    • OK (fonctionne),
    • en cours d’utilisation,
    • cassĂ©/sabotĂ© ;
  • temps de rĂ©paration Ă©ventuels.

Les sabotages et événements modifient souvent l’état des équipements définis ici.

events.py​

Contient les événements de jeu globaux :

  • système EventManager qui :
    • vĂ©rifie rĂ©gulièrement s’il faut dĂ©clencher un Ă©vĂ©nement ;
    • choisit un type d’évĂ©nement (inspection sanitaire, etc.) ;
    • applique son effet Ă  un ou plusieurs joueurs.

C’est un bon point d’entrée pour :

  • ajouter un nouvel Ă©vĂ©nement alĂ©atoire ;
  • ajuster la frĂ©quence des Ă©vĂ©nements existants.

inventory.py​

Gère l’inventaire et le stock :

  • classe FoodStock pour le stock global de chaque restaurant ;
  • dictionnaire RECIPES qui relie les plats aux ingrĂ©dients ;
  • PlayerInventory pour l’inventaire portatif (armes, etc.).

Les mécanismes décrits dans la page Inventaire & armes de la doc systèmes reposent sur ce module.

map.py​

Gère la carte et le niveau :

  • chargement des fichiers .tmx (Tiled) ;
  • extraction des calques de collisions ;
  • positionnement des Ă©quipements, zones de service, spawn de clients, etc.

Si tu ajoutes une nouvelle carte ou un nouveau layout :

  • crĂ©e un .tmx dans assets/ ;
  • adapte map.py pour le charger et l’utiliser.

minigames.py​

Contient la logique des mini‑jeux :

  • dĂ©finition des diffĂ©rents mini‑jeux ;
  • boucle de mise Ă  jour spĂ©cifique (inputs, timing, jauges…) ;
  • renvoi du rĂ©sultat (succès/Ă©chec) vers GameState.

Pour ajouter un mini‑jeu :

  • ajouter une nouvelle classe/fonction dans minigames.py ;
  • brancher son dĂ©clenchement depuis state.py ou d’autres modules.

player.py​

Définit les joueurs :

  • position, vitesse, direction, zone actuelle (rue, tacos, kebab) ;
  • Ă©tat (libre, en interaction, dans un mini‑jeu…) ;
  • rĂ©fĂ©rence vers l’inventaire joueur ;
  • mĂ©thodes d’interaction avec le monde (ramasser, dĂ©poser, utiliser un Ă©quipement, attaquer).

sabotage.py​

Regroupe les systèmes de sabotage :

  • dĂ©finition des types de sabotages disponibles ;
  • conditions de dĂ©clenchement (coĂ»t, proximitĂ©, cooldown) ;
  • effets appliquĂ©s sur l’état du jeu (casse Ă©quipements, stock, rĂ©putation…).

C’est le point d’entrée pour :

  • crĂ©er un nouveau sabotage ;
  • modifier les paramètres (coĂ»t, durĂ©e, impact).

state.py​

Module central de l’état du jeu (GameState) :

  • score, temps restant, phase (menu, jeu, fin de partie) ;
  • listes de clients, joueurs, armes, sabotages en cours ;
  • logique de spawn de clients, mise Ă  jour des timers, calcul de rĂ©putation ;
  • transition entre les Ă©crans (dĂ©but/fin de partie, pause).

Si tu cherches “où se passe la magie”, c’est souvent dans GameState.