# Spécifications finales – Build a Zoo (Evo Zoo)

Document consolidé décrivant l'état final du projet, sans les étapes intermédiaires ni le fil des évolutions.

---

## 1. Périmètre et objectif

Reconstruction, à fonctionnalités équivalentes, d'un tycoon centré sur l'achat d'œufs (via une carte du monde), l'éclosion en animaux, la production passive de monnaie, l'extension du terrain et l'amélioration des chances de rareté. Version web (navigateur), pas Roblox. Jeu multi-joueur : comptes, base de données, zoos des autres joueurs et bots visibles sur la carte.

### Boucle de jeu

- Achat d'œufs depuis la carte du monde (glisser l'œuf sur le camion pour acheter).
- Placement des œufs en nurserie ou sur une case vide (grille du zoo).
- Éclosion temporisée → animal selon biome et rareté (tirage pondéré).
- Revenus passifs (animaux + visiteurs + boutiques).
- Dépense de pièces : améliorer compétences (école), parcelle, camion, carte du monde, nurseries, boutiques.

### Garanties au démarrage et au chargement

- À la création d'un zoo (inscription) : état initial avec 200 pièces, offres déjà renouvelées avant envoi au serveur.
- **Démarrage autonome** : Le joueur commence systématiquement avec **3 couples reproducteurs d'animaux basiques** (ex. Lapins, Poules, Canards selon biome de départ) déjà placés ou dans l'inventaire. Cela garantit une reproduction immédiate et alimente le marché "bas prix" dès le début sans dépendre des enchères externes.
- Au chargement (localStorage ou API) : si pièces &lt; 100, correction à 200 ; si liste d'offres vide, rafraîchissement des offres. Ainsi le joueur a toujours de quoi jouer.

### Règles économie

- Revenu par animal : revenu de base × multiplicateur mutation × multiplicateur niveau, par intervalle de temps.
- Coûts d'upgrade : progression par paliers (ex. coût de base × facteur^(niveau−1)).
- Loot œuf → animal : tirage pondéré selon le biome de la case et la table de l'œuf (15 couleurs, 5 niveaux de rareté par couleur, 75 animaux). Les niveaux de rareté sont pondérés par la suite de Fibonacci (F(1)=1, F(2)=1, F(3)=2, F(4)=3, F(5)=5) pour les revenus et la valeur de vente. Identification des animaux par couleur et rareté (ex. c0_r0 à c14_r4). Compatibilité anciennes sauvegardes : au chargement, animal inconnu → c0_r0, œuf inconnu → Color_1.
- Sécurité : pas de confiance au client pour pièces, loot, timers, placements ; limitation de la fréquence des actions ; traçabilité des transactions.

---

## 2. Carte du zoo (grille)

### Cases spéciales

- **École** : une case (ex. (1,1)) affiche l'icône école ; niveau de compétences = max des niveaux d'écoles ; déblocage des types d'œufs selon ce niveau. Amélioration en cliquant sur la case (flèche ▲ si upgrade possible).
- **Nurserie** : œufs achetés apparaissent dans les cases nurserie (au-dessus de la zone « Agrandir zoo »), un œuf par case ; placement par clic sur une case vide ou glisser. Construction payante sur case vide (choix Nurserie ou Boutique). Le jeu commence avec une case nurserie à côté de l'école.
- **Boutique de souvenirs** : construction payante sur case vide. Les visiteurs qui passent par une boutique rapportent plus de pièces. Évolution payante pour augmenter les revenus par passage.
- **Nurserie – évolution** : payante ; éclosion plus rapide selon le niveau ; les animaux plus rares ont un temps d'éclosion plus long (multiplicateur rareté).
- **Agrandir zoo** : zone dédiée au-dessus de la zone du camion (📐 + flèche ▲ si upgrade possible). Plus d'icônes « Agrandir » ou « Agrandir la carte » à côté de l'école sur la grille.
- **Zone camion (vente)** : en bas à droite du panneau parcelle. Glisser un animal sur cette zone pour le vendre (envoi à un autre zoo, animation camion sur la carte du monde).

### Grille et Feedbacks Visuels Environnementaux

- Biomes par tiers de largeur : prairie (gauche), océan (milieu), montagne (droite).
- **Feedbacks visuels de terrain** (remplace les jauges) :
  - **Mauvais biome** : L'herbe jaunit fortement, le sol se craquelle ou devient boueux (changement de teinte global de la case).
  - **Température inadaptée** : Le sol se couvre de givre blanc (trop froid) ou émet des vapeurs rougeâtres (trop chaud).
  - **Saleté** : Accumulation visible de déchets sombres ou de poussière grise si l'entretien laisse à désirer.
- Glisser-déposer : œufs et animaux déplaçables d'une case à l'autre ; image de glissement = contenu de la case (emoji + libellé).
- **Disparition des animaux** : un animal non visité par un visiteur pendant une durée configurable (ex. 5 min, `Visitor.MaxSecondsWithoutVisit`) est retiré ; la case redevient vide.

### Visiteurs et Incidents (Gameplay d'attente)

- Les visiteurs se déplacent sur la grille (attraction vers les animaux à forte valeur).
- **Incidents et Exigences** : Les visiteurs peuvent rencontrer des problèmes ou exprimer des exigences spécifiques (soif, poubelle pleine, banc requis, animal trop loin, envie de photo).
  - **Apparition contextuelle** : Ces incidents apparaissent plus fréquemment lorsque le joueur est en phase d'attente (camion en déplacement, enchère en cours, éclosion longue) pour combler les temps morts et offrir une activité gratifiante.
  - **Affichage** : Une bulle d'icône apparaît au-dessus du visiteur concerné.
  - **Résolution** : Le joueur doit cliquer sur la bulle ou effectuer une action correctrice (poser un banc, nettoyer).
  - **Impact** :
    - Résolu : Gain immédiat d'attraction et bonus de pièces.
    - Ignoré/Non résolu : Perte d'attraction et départ prématuré du visiteur.
- **Invités de luxe** : Une part des visiteurs (ex. 8 %) paie plus l'entrée et dépense plus en boutique.

---

## 3. Carte du monde

### Présentation

- Carte fixe avec zoos en positions fixes. Le **zoom** dépend uniquement du niveau d'upgrade « Agrandir carte » (pas de molette ni de pan manuel). Grille de fond aux couleurs des biomes (prairie / océan / montagne), comme la grille du zoo. Zoos, villes et laboratoire affichés par-dessus.
- Un seul œuf visible par zoo : nom du zoo puis un slot fixe avec soit l'icône zoo (🏠), soit un œuf (type + prix) pour les autres zoos. Pour le zoo du joueur : pas d'œuf affiché, seulement nom + icône zoo.
- Achat d'œuf : glisser l'œuf depuis le slot d'un zoo (ou du laboratoire) sur le **camion** du joueur ; le camion fait l'aller-retour zoo joueur → zoo vendeur → zoo joueur ; la vitesse dépend du niveau du camion. Les œufs achetés apparaissent en nurserie sur la carte du zoo.

### Zones sur la carte du monde

- **Agrandir la carte** : zone au même emplacement que le camion (au-dessus), avec flèche ▲ si upgrade possible.
- **Camion** : zone pour déposer un œuf (achat) ; même zone pour l'animation de vente (animal vendu → camion vers un autre zoo).

### Laboratoire

- POI « Laboratoire » (🔬) sur la carte. Parfois une offre d'œuf (prix fixe, pas d'enchères) ; achat en glissant l'œuf sur le camion ou équivalent selon l'UI.

### Villes

- Villes affichées (icône 🏙️). Plus le zoo est proche d'une ville, plus il « attire » de visiteurs (formule d'attraction). La valeur totale des animaux du zoo augmente aussi l'attraction.

### Stagnation

- Zoos qui évoluent peu (aucune action d'évolution depuis un certain temps) subissent une baisse progressive du multiplicateur de visiteurs (jusqu'à un plancher, ex. 10 %).

### Camions NPC

- Des camions (ventes d'œufs entre zoos) sont visibles sur la carte ; ils se déplacent entre deux zoos (animation interpolée), ajoutés périodiquement par la boucle de jeu.

### Bots

- Les zoos bots ont les mêmes indicateurs et formules que le joueur (revenus, niveaux). Leurs décisions (achat, vente, upgrades) sont pilotées par un **profil** (fast ~70 % du coût pour agir, slow ~200 %, balanced intermédiaire). Les couleurs d'œufs achetées sont pondérées par les **zoos voisins** sur la carte (distance max configurable) et les poids propres.

---

## 4. Interface et barre du haut

### Barre du jeu (tout en haut, toute la largeur)

- À gauche : titre « Construis un zoo » + icône d'aide « ? » (tooltip sur la ligne de statut).
- Barre d'indicateurs avec icônes uniquement ; texte (libellé) au survol (tooltip). Indicateurs : Pièces (🪙), Parcelle (📐), Case sélectionnée (📍, format « x y » sans virgule), Compétences (🎓), Visiteurs (👤), Œufs à vendre (🥚), Météo/heure (🌤️). Aucune décimale (valeurs entières).
- À droite : bouton Musique (🎵, actif / grisé si désactivé), icône Quêtes (📋, ouverture d'un menu type notification avec « Objectifs du jour »), Prestige (⭐), Recommencer (🔄), Mode automatique (✋ inactif / 🤖 actif). Le bouton de vue (zoo / monde) affiche l'icône de la vue active (🦒 ou 🗺️) et bascule au clic.

### Contenu sous la barre

- Pas de barre (ligne) de séparation entre la barre et le contenu. Pas d'onglets « Carte du zoo » / « Carte du monde » ni titres « Parcelles (?) » / « Carte du monde (?) ». Un seul sélecteur dans la barre : deux icônes zoo / monde pour afficher soit la grille du zoo soit la carte du monde.
- Message d'erreur : affiché au-dessus du contenu ; masqué (non visible, ne prend pas de place) lorsqu'il n'y a pas d'erreur.

### Rafraîchissement

- La barre du haut n'est pas reconstruite à chaque mise à jour ; seules les parties dynamiques (indicateurs, grille, carte du monde) sont rafraîchies. La vue active (zoo ou monde) reste celle affichée après un rafraîchissement.

### Sons, musique, quêtes, météo, prestige

- Sons distincts par action (achat, placement, éclosion, upgrade, vente, quête, erreur). Musique de fond activable (bouton 🎵) ; préférence enregistrée (ex. localStorage).
- Quêtes / objectifs journaliers : 3 quêtes par jour (placer œufs, gagner pièces, vendre animaux, améliorer tapis/parcelle) ; récompense en pièces à la complétion ; affichage en menu type notification (icône 📋).
- Météo (ensoleillé / nuageux / pluie) et cycle jour–nuit (longueur configurable) ; affichage dans la barre (ex. « Jour · Ensoleillé »). Fond de page dont la couleur ou le dégradé varie selon la phase (aube, jour, crépuscule, nuit) et la météo.
- Prestige : reset grille et progression contre bonus permanent de revenus (+15 % par niveau) ; coût minimal en pièces. Bouton ⭐ dans la barre.
- Visiteurs : sprites animés sur la grille (trajectoires uniques, attraction vers le centre pondéré par la valeur de vente des animaux) ; revenu additionnel = (nombre de visiteurs) × paiement par visiteur.

---

## 5. Comptes, persistance et multijoueur

### Accès

- Pas de jeu en local : au démarrage, écran avec champ « URL du serveur » (pré-rempli si déjà enregistré) et bouton « Se connecter au serveur ». Après connexion, bootstrap : chargement des zoos, chargement du zoo du joueur (GET /api/zoos/me).

### Comptes

- Authentification par clé (pseudo sans mot de passe ; paire clé générée dans le navigateur ; requêtes signées ; clé privée stockée en local). Comptes en base (ex. table `accounts` : id, public_key, pseudo, etc.).
- **401** sur GET /api/zoos/me : compte inconnu → écran « Créer un compte » (pseudo), puis inscription et création du zoo.
- **404** : compte connu mais aucun zoo → création automatique d'un zoo avec état initial, puis entrée dans le jeu.
- **200** : chargement du `game_state` et affichage du jeu.

### Données joueurs et bots

- Table `zoos` : une ligne par zoo (joueur ou bot) avec id, name, position (x, y), animal_weights, game_state (JSONB), is_bot, account_id (NULL pour les bots). Les bots ont leur game_state persisté et mis à jour par un tick serveur ; le client affiche les zoos reçus de l'API (refetch périodique).

### Mode automatique et Profils d'absence

Le joueur peut activer un « mode automatique » (bouton dans la barre) pour maintenir son zoo en vie lors de ses absences. Il doit choisir un **profil de gestion** parmi 50 archétypes (basés sur les logiques des bots).

**Interface de sélection des profils :**

- L'interface ne doit pas être une simple liste déroulante.
- Elle doit proposer une sélection hiérarchique :
  1.  **Choix de la Famille** (Conservateur, Éleveur, Commerçant, Expansionniste, Scientifique).
  2.  **Choix de la Spécialisation** au sein de la famille choisie (ex: "Le Jardinier Prudent" vs "Le Gardien").
- Chaque profil affiche clairement ses priorités et ses risques.

**Liste des 50 profils disponibles (catégories principales) :**

1.  **Les Conservateurs (1-10)** : Priorité absolue à la survie. Achètent uniquement de la nourriture, ne vendent pas, ne s'étendent pas.
    *   *Profils :* "Le Jardinier Prudent", "L'Économe", "Le Gardien", "Le Protecteur", "Le Minimaliste", etc.
2.  **Les Éleveurs (11-20)** : Priorité à la reproduction. Optimisent les placements pour les naissances, achètent des partenaires.
    *   *Profils :* "Le Généticien", "Le Marieur", "La Cigogne", "Le Producteur de Masse", "L'Expert en Rareté", etc.
3.  **Les Commerçants (21-30)** : Priorité à l'achat/vente. Achètent bas, revendent dès qu'une marge est possible.
    *   *Profils :* "Le Trader", "L'Importateur", "Le Grossiste", "Le Spéculateur", "Le Négociant Rapide", etc.
4.  **Les Expansionnistes (31-40)** : Priorité à l'agrandissement du terrain et des infrastructures. Investissent tout le cash dans la pierre.
    *   *Profils :* "Le Bâtisseur", "L'Architecte", "Le Conquérant", "Le Visionnaire", "L'Urbaniste", etc.
5.  **Les Scientifiques (41-50)** : Priorité à la recherche et à l'école. Cherchent à débloquer les niveaux supérieurs avant tout.
    *   *Profils :* "Le Chercheur", "Le Professeur", "L'Innovateur", "Le Technologue", "Le Savant Fou", etc.

Chaque profil dispose de paramètres spécifiques (seuil de dépense, fréquence d'action, type d'animaux préférés) qui influencent l'évolution du zoo pendant l'absence du joueur.

---

## 6. Intervalles et charge

- Boucle de jeu (revenus, météo, temps, visites, bots, éclosions, sauvegarde) : environ toutes les **5 s**.
- Sauvegarde locale et API : au plus toutes les **5 s** ; throttle côté API (pas plus d'un envoi toutes les 5 s).
- Rafraîchissement des offres (carte du monde) : au plus toutes les **8 s**.

---

## 7. Éléments non implémentés / suite possible

### Billeterie

- Demande : une icône « boutique » au démarrage = billeterie ; les visiteurs arrivent par la billeterie, paient l'entrée une fois, repartent avant la fin de la journée, puis reviennent selon l'attraction du zoo. **Non implémenté** : pas de case billeterie ni de modèle explicite arrivée / départ / retour selon l'attraction. Suite possible : préciser le design (case dédiée, lien avec boutiques souvenir et calcul des visiteurs), puis implémenter le flux.

### Optionnel / à trancher

- Rafraîchissement périodique de la liste des zoos (GET /api/zoos) : déjà en place (ex. 30 s). Usage de mapWidth / mapHeight renvoyés par l'API pour adapter l'échelle de la carte au nombre de joueurs : non utilisé pour l'instant (positions en %).

### Autres

- Trading joueur–joueur (échanges directs).
- Événements live réels (fenêtres UTC avec œufs / récompenses limités dans le temps).
- Leveling des animaux (mécanique pour faire monter le niveau au-delà du multiplicateur actuel).
- Options de confort (vitesse du jeu x2, auto-collect distinct).
- Décorations sur la parcelle.

---

## 8. Références

- **BDD et comptes** : `docs/bdd-comptes.md` (schéma SQL, variables d'environnement, flux 401/404/200, déploiement).

---

## 9. Rappel des grandes règles

### Cartes

- Même style avec des cases de couleurs influençant le développement des animaux en cohérence animal/milieu.
- Les cases forment le quadrillage des cartes.

### Cases

- Elles ont forcément une couleur (milieu eau douce, eau salée, montagne, prairie, forêt… et une température).
- Les transitions de couleurs et de températures sont douces entre les cases.
- Certains animaux prennent plusieurs cases.

---

## 10. Carte du zoo – cases détaillées

### Types de cases

#### Centre de recherche

- Produit des unités de recherche à dépenser pour agrandir la carte du monde.
- 7 niveaux : par palier : niveaux plus élevés, nombre de zoos plus élevé.
- Donne accès à des niveaux d'animaux et de bébés dans les autres zoos.
- 1 unité couvre 10 zoos définis maximum dans la carte (par proximité).

#### Billeterie

- 7 niveaux : par palier : plus cher, plus de visiteurs dans le zoo en simultané.
- Permet de vendre des entrées aux visiteurs.
- 1 unité couvre 20 visiteurs dans le zoo en simultané maximum (limite les visiteurs dans le zoo).

#### Boutique

- 7 niveaux : par palier : plus cher, plus de visiteurs simultanés.
- Permet de vendre des produits aux visiteurs lorsqu'ils passent par des boutiques.
- 1 unité couvre 5 visiteurs simultanés au maximum.

#### Nurserie

- 7 niveaux : par palier : plus rapide, meilleurs reproducteurs.
- Permet de faire naître des bébés durant une période de temps.
- 1 unité fait grandir 1 bébé maximum.

#### Nourriture

- 7 niveaux : par palier : plus de nourriture de meilleurs effets sur les animaux (reproduction).
- Permet de nourrir les animaux (chaque animal a une consommation / unité de temps, sinon il meurt et un doit avoir toujours bien mangé pour se reproduire).
- Permet de se reproduire.
- 1 unité couvre 5 animaux maximum.

#### Accueil nouveaux animaux

- 7 niveaux : par palier : plus rapide, meilleurs reproducteurs.
- Permet d'acclimater les nouveaux animaux durant une période de temps.
- 1 unité couvre 1 animal.

#### Camion

- 7 niveaux : par palier : plus rapide, dégrade moins le score de reproduction avec la durée du transport.
- Dans la carte du zoo : quand on déplace dessus un bébé ou un animal il sort de la carte du zoo et il est mis en vente sur la carte du monde dans une case de vente.
- Dans la carte du monde : se déplace (allers retours) entre le zoo du joueur et les autres zoos (achats/ventes), les objets sont pris en compte une fois arrivés au zoo ou retirés du zoo par le camion.
- 1 unité couvre 1 camion.

#### Changement de milieu (couleur choisie) (payant)

- 7 niveaux : par palier : plus détaillé, plage de température plus précise, améliore la reproduction, diminue le besoin de nourriture, allonge le temps avant de mourir dans le cas des morts.
- Dans la carte du monde : se déplace (allers retours) entre le zoo du joueur et les autres zoos (achats/ventes), les objets sont pris en compte une fois arrivés au zoo ou retirés du zoo par le camion.
- 1 unité couvre 1 camion.

#### Changement de milieu (température choisie)

- 7 niveaux : par palier : plus détaillé, plage de température plus précise, améliore la reproduction, diminue le besoin de nourriture, allonge le temps avant de mourir dans le cas des morts.

#### Bébé mature

- Fin de période de nurserie dans la nurserie pour être déplacé sur une case du zoo (devient un animal) ou sur le camion (bébé).

#### Animal prêt

- Fin de période d'accueil de l'animal dans l'accueil des animaux pour être déplacé sur une case du zoo ou sur le camion.

### Règles communes aux cases

- Certains animaux prennent plusieurs cases.
- Une couleur et température de départ.
- On peut acheter dessus (occupe la case) : recherche, billeterie, boutique, nurserie, nourriture, Accueil nouveaux animaux, camion, changement de milieu (couleur choisie), changement de milieu (température choisie).
- On peut déplacer dessus (occupe la case) : bébé mature, animal prêt.

### Cases du zoo au lancement du jeu

- 1 Agrandissement du zoo (+1 case, payant) (changement)
- 1 Recherche tout en haut à gauche
- 1 Billeterie tout en haut à gauche
- 1 Nurserie tout en haut à gauche
- 1 Accueil nouveaux animaux tout en haut à gauche (changement)
- 1 Nourriture générale tout en haut à gauche (changement)
- 1 Camion tout en haut à gauche (changement)
- 24 cases de 3 couleurs différentes

### Attractivité des animaux

- Les visiteurs arrivent dans le zoo depuis la billeterie et repartent par la billeterie.
- Les visiteurs restent au maximum 1 journée.
- Les visiteurs restent dans la journée plus longtemps par boutiques et en fonction du nombre d'animaux différents.
- Les visiteurs se déplacent en étant plutôt attirés.

### Attractivité du zoo

- Attractivité proportionnelle à la valeur cumulée des animaux du zoo.
- Attractivité proportionnelle au nombre d'animaux différents dans le zoo.
- Attractivité proportionnelle à la rareté (niveau) des animaux.
- Attractivité proportionnelle au taux de remplissage en animaux.
- Les morts pénalisent l'attractivité du zoo auprès des visiteurs à venir dans les villes.
- Les morts pénalisent l'apparition de naissances dans le zoo.
- Les naissances augmentent l'attractivité du zoo auprès des visiteurs à venir dans les villes.
- Les naissances augmentent l'apparition d'autres naissances dans le zoo.

### Score de reproduction du zoo

- Nombre de naissances.
- Taux d'alimentation des animaux.
- Un animal dans un zoo de bon score de reproduction aura quand il est vendu un bon score de reproduction.

---

## 11. Carte du monde – cases et éléments

### Cases du monde au lancement du jeu

- 1 Agrandissement de la carte (grisé ou non payé en unités de recherche produites par les centres de recherche des zoos du joueur : plus cher en unité de recherche par paliers même nombre de cases ajoutées) (changement)
- 1 Compteur de bébés à vendre
- 1 Compteur d'animaux à vendre
- 1 Compteur de laboratoires
- 1 Compteur de zoos
- 1 Compteur de villes
- 1 Accueil nouveaux animaux tout en haut à gauche (changement)
- 1 Nourriture générale tout en haut à gauche (changement)
- 1 Camion tout en haut à gauche (changement)
- 24 cases de 3 couleurs différentes

### Autres cases

- **Case du zoo du joueur** : 1 case du nom du zoo, juste dessous 1 case du score d'attractivité, juste dessous 1 case du score de reproduction, juste dessous 1 case de vente, possibilité d'acheter sur les cases voisines d'autres cases de ventes.
- **Cases des zoos des autres joueurs** : mêmes principes que pour le joueur actif.
- **Cases des zoos des bots** : mêmes principes que pour le joueur actif.
- **Cases des villes** : 1 case nom, 1 case nombre de visiteurs maximums vers les zoos.

---

## 12. Animaux

- Niveaux de rareté des bébés de ce type d'animaux.
- Niveaux de rareté de ce type d'animaux.

### Feedbacks visuels d'état (pas de jauges)

- **Froid** : L'animal devient bleuâtre/pâle, givre visible sur le sprite.
- **Chaud** : L'animal devient rougeâtre, vapeur de chaleur visible.
- **Faim** : Déplacement lent, maigreur visible, cherche le sol, icône "faim" discrète.
- **Maladie/Mort proche** : L'animal est couché, couleurs ternes, mouches autour.
- **Heureux/Reproduction** : Cœurs, sautillements, couleurs vives.
- **Lisibilité** : Pour garantir la lisibilité sur mobile, les changements de couleur (teinte globale du sprite) sont privilégiés par rapport aux micro-animations (tremblements).

### Mort

- Seuls, pas visités, manque de nourriture, tué par un autre animal d'un autre zoo, niveau de recherche trop inférieur par rapport au niveau de l'animal, bébé non vendu dans les délais, bébé de nurserie prêt non placé dans les délais, animal d'accueil prêt non placé sur la carte après un délai, animal non placé sur la carte dans les délais (vente échouée), température trop en écart avec la température de l'animal, milieu (couleur) trop en écart avec la température de l'animal.

### Reproduction

- Après un délai en proximité d'un autre animal de même type mais issu d'un zoo différent (donne un nouveau bébé à placer en nurserie ou à vendre, va directement en nurserie si disponible sinon directement en vente).
- Score de reproduction du zoo qui le vend au moment de la vente accélère l'arrivée d'un bébé.
- Température en très bonne adéquation avec la température de l'animal.
- Milieu (couleur) en très bonne adéquation avec la température de l'animal.

### Scores et paramètres

- Score de reproduction par milieux (couleurs).
- Score de survie par milieux (couleurs).
- Température idéale.
- **Saisons** : Les 4 saisons (Printemps, Été, Automne, Hiver) influencent la météo, la température et les bonus/malus de reproduction et de survie selon le type d'animal.

---

## 13. Ventes

- Sur la carte du monde, case sous les noms des zoos (autre case) : bébé à vendre ou animal à vendre sur des cases de vente du zoo sur la carte du monde.
- Enchères entre joueurs et bots (l'utilisateur qui vend choisit de valider ou non la vente après un temps, si bébé invendu il meurt), montant initial décidé par le vendeur.
- **Validation différée et synchronisation** :
  - Pour éviter les "race conditions" et ajouter une tension de jeu, la base de données attend **10 minutes** avant de valider définitivement un achat.
  - Durant ce délai, un **sablier** s'affiche sur la transaction.
  - L'achat n'est effectif (transfert de propriété et de fonds) qu'à la fin du sablier.
- Déplacer l'animal ou le bébé sur le camion :
  - Dans la carte du zoo : met en vente, l'animal ou le bébé s'affiche avec le dernier montant des enchères sur la carte.

---

## 14. Changements par rapport à la version œufs

- Ce ne sont plus des œufs qui apparaissent dans les zoos mais des bébés animaux.
- Les zoos vendent aussi des animaux adultes.
