# Spécifications : Attractivité dans le Zoo sur les Visiteurs ## Définition Comportement des visiteurs une fois qu'ils sont entrés dans l'enceinte du zoo. ## Mécanique de Déplacement Les visiteurs ne se déplacent pas au hasard. Ils ont des "cibles" d'intérêt. - **Cibles Prioritaires** : Animaux Rares > Animaux Communs > Boutiques. - **Algorithme** : À chaque intersection ou fin d'action, le visiteur évalue l'attrait des cases environnantes. ## Facteurs de Rétention - **Diversité** : Voir des animaux différents prolonge la visite. - **Confort** : La présence de bancs, poubelles et boutiques augmente le temps de séjour. - **Départ** : Si l'attrait local tombe sous un seuil (ennui) ou si la journée finit, le visiteur se dirige vers la sortie (Billeterie). # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) Propriétés de `Visiteur`. ### Caractéristiques Initiales N/A ### Scores Initiaux N/A ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition N/A ### Conditions de Disparition N/A ### Hérédité N/A ## 3. Impacts Environnementaux ### Impact Température **Canicule/Grand Froid** : Réduit le temps de séjour (-30%). ### Impact Milieu (Biome) N/A ### Impact Saisons N/A ### Impact Heure / Jour-Nuit N/A ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction N/A ### Impact Mort Voir `visiteur.md` (Départ immédiat). ### Impact Nourriture N/A ### Impact Attractivité (Visiteurs/Animaux) **Poids des Cibles** : | Type Cible | Poids | | :--- | :--- | | Animal Rareté 1 | 10 | | Animal Rareté 5 | 100 | | Boutique | 50 | | Banc (si fatigué) | 200 | ### Impact Valeur N/A ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) N/A ### Dépenses (Boutiques/Visiteurs) N/A ### Trajet Visiteurs Algorithme de choix de cible pondéré. ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur N/A ## 7. Progression ### Tableau des Upgrades N/A ## 8. Logique et Interfaces ### Pseudo-code Impacts ``` function chooseNextTarget(visitor, zoo): candidates = getAllPOIs(zoo) scoredCandidates = candidates.map(c => { score = c.attractiveness / distance(visitor, c) return { target: c, score: score } }) return weightedRandomSelect(scoredCandidates) ``` ### Messages d'Infos / Alerte N/A # Annexes UX/UI ## 1. Expérience Utilisateur (UX) ### Foule (Passif) **Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants. **Description UI** : Densité de sprites visiteurs plus élevée autour des cases "Stars". **Emplacement** : Grille Zoo. **Intégration** : Comportement IA. **Navigation** : N/A **Événements** : `CROWD_GATHER`. #### Assets - **Musiques** : N/A - **Sons** : Rumeur de foule (volume variable selon densité). - **Graphiques** : N/A - **Images** : N/A - **Vidéos** : N/A - **Animations** : Applaudissements, Photos. - **Couleurs** : N/A - **Textes** : N/A - **Formes** : N/A