🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script onizuka_simulation.py
Version 1.0.0
Date de création 25/03/2026
Auteur / Demandeur refoïa jeremy
Objectif principal Simuler un écosystème dynamique impliquant la croissance de l’herbe, le comportement des cerfs (proies) et des loups (prédateurs).
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script utilise la bibliothèque Pygame pour créer une simulation visuelle en temps réel. Il gère trois entités : l’herbe (ressource), les cerfs (consommateurs primaires) et les loups (prédateurs). Chaque agent possède des règles de déplacement, de consommation d’énergie, de reproduction et de mort.
📌 Problème résolu
Il permet d’illustrer visuellement les cycles biologiques et les interactions complexes entre espèces (modèle type Lotka-Volterra simplifié) dans un environnement clos.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS) avec support graphique
Mode d’exécution Interface Graphique (GUI)
📦 Dépendances / Librairies
Librairies standard : random
Librairies externes : pygame
📥 ENTRÉES (INPUTS)
📂 Paramètres de configuration (Hardcodés)
# Nom Type Description Valeur par défaut
1 WIDTH / HEIGHT int Dimensions de la fenêtre de simulation 800×600
2 HERBE_REGEN float Probabilité d’apparition de nouvelle herbe 0.5
3 AGENT_SIZE int Taille d’affichage des agents (pixels) 5
📤 SORTIES (OUTPUTS)
📂 Données en sortie
Type Format Description
Visuel Fenêtre Pygame Rendu graphique en temps réel de la prairie et des agents
Console N/A Aucun log console par défaut
🧱 STRUCTURE DU SCRIPT
onizuka_simulation.py
│
├── 📌 IMPORTS (pygame, random)
├── 📌 CONSTANTES / CONFIG (Couleurs, Dimensions, FPS)
├── 📌 CLASSES
│ ├── Agent → Classe mère (déplacement, énergie)
│ ├── Cerf(Agent) → Logique spécifique (manger herbe)
│ └── Loup(Agent) → Logique spécifique (chasser cerf)
└── 📌 MAIN LOOP (Gestion des événements, mises à jour, dessin)
🔧 Détail des classes & fonctions
Fonction/Méthode Paramètres Retour Rôle
Agent.move() Aucun None Déplacement aléatoire et réduction d’énergie
Cerf.manger(herbes) list None Détecte l’herbe à proximité et augmente l’énergie
Loup.chasser(cerfs) list bool Détecte un cerf, le consomme et gagne de l’énergie
🔄 LOGIQUE / ALGORITHME
Initialisation : Création des listes d’objets (25 cerfs, 5 loups, 50 herbes).
Boucle de rendu (30 FPS) :
Phase Herbe : Apparition aléatoire basée sur HERBE_REGEN.
Phase Cerfs : Déplacement ➔ Alimentation ➔ Test de reproduction (>50 env) ➔ Test de mort (<=0 env). Phase Loups : Déplacement ➔ Chasse ➔ Test de reproduction (>80 env) ➔ Test de mort (<=0 env). Affichage : Dessin des cerfs (Blancs), loups (Rouges) et herbes (Cercles verts clairs). 🚨 GESTION DES ERREURS Performance : En cas de surpopulation massive d'agents, le framerate peut chuter. Limites : Les agents sont contraints dans les coordonnées (0,0) à (WIDTH, HEIGHT). ✅ RÈGLES MÉTIER Coût de vie : Chaque mouvement réduit l'énergie de l'agent (-0.1). Priorité : Les cerfs doivent être à moins de 10 pixels pour manger/être mangés. Reproduction : Un agent se dédouble lorsqu'il atteint son seuil critique d'énergie, partageant son énergie avec sa progéniture. 🧪 TESTS ATTENDUS # Cas de test Entrée Résultat attendu 1 Équilibre Config initiale Les populations oscillent sans s'éteindre immédiatement 2 Famine Cerfs 0 herbes Extinction totale des cerfs puis des loups 3 Fermeture Clic sur "X" Arrêt propre du processus Pygame 📝 EXEMPLE D'UTILISATION ▶️ Lancement en ligne de commande Bash python onizuka_simulation.py



Avis
Il n’y a pas encore d’avis.