Files
builazoo/docs/specs/achat_upgrade_case_zoo.md
Nicolas Cantu 5143a79890 docs: enrich docs/specs and remove placeholders
**Motivations:**
- Make docs/specs implementation-ready without empty sections or placeholders.

**Root causes:**
- Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording.

**Correctifs:**
- Replace placeholders with explicit tables, structures, and typed examples.
- Align “no cache / no memorization” statements where relevant.

**Evolutions:**
- Add a features doc entry to track the documentation enrichment effort.

**Pages affectées:**
- docs/specs/*
- docs/features/docs-specs-enrichment.md
- docs/leo.md
- docs/plan-enrich-docs-specs.md
2026-03-05 03:08:15 +01:00

96 lines
3.5 KiB
Markdown

# Spécifications : Achat et Upgrade des Cases du Zoo (Agrandissement)
## Agrandissement du Zoo
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
- **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide.
- **Contraintes** : Limité par la taille de la carte globale ("Monde" ou "Région").
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Action sur l'objet `Zoo` (dimensions).
```json
{
"zoo_id": "uuid",
"dimensions": { "width": 5, "height": 6 },
"expansion_history": [
{ "direction": "EAST", "cost": 1000, "timestamp": "timestamp" }
],
"max_dimensions": { "width": 20, "height": 20 }
}
```
### Caractéristiques Initiales
**Taille Initiale** : 5x6 cases (30 cases).
## 7. Progression
### Tableau des Upgrades (Agrandissement)
| Extension | Coût (Pièces) | Gain |
| :--- | :--- | :--- |
| +1 Colonne (Est) | 1000 | +Hauteur cases (6) |
| +1 Ligne (Sud) | 1000 | +Largeur cases (5) |
| +1 Colonne (Ouest) | 2000 | +Hauteur cases |
| +1 Ligne (Nord) | 2000 | +Largeur cases |
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
| +1 Ligne (Sud 2) | 5000 | +Largeur cases |
## 8. Logique et Interfaces
### Algorithme d'Expansion
```python
def expand_zoo(zoo, direction, player):
cost = calculate_expansion_cost(zoo, direction)
if player.money < cost:
return error("INSUFFICIENT_FUNDS")
if reaches_world_limit(zoo, direction):
return error("WORLD_LIMIT_REACHED")
player.money -= cost
# Mise à jour de la grille
new_cells = generate_new_strip(direction, zoo.dimensions)
zoo.grid.merge(new_cells)
zoo.update_dimensions(direction)
return success("ZOO_EXPANDED")
```
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 1. Expérience Utilisateur (UX)
### Achat Parcelle (Action)
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
**Description UI** : Zone grisée ou avec panneau "À Vendre". Au survol, prix affiché.
**Emplacement** : Bords de la Carte Zoo.
**Intégration** : Grille étendue.
**Navigation** : Clic Zone Grisée -> Confirmer Achat.
**Événements** : `EXPAND_ZOO`.
#### Assets
- **Musiques** : Son "Vent dans les plaines" lors du survol.
- **Sons** : `land_buy.mp3`.
- **Graphiques** : Panneau "For Sale".
- **Images** : Texture herbe (cachée par brouillard).
- **Vidéos** : Timelapse accéléré de la construction des clôtures (2s).
- **Animations** : Brouillard se dissipe, herbe apparaît.
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
- **Textes** : "Acheter Terrain (X Pièces)".
- **Formes** : Carré.
### Vue Isométrique
- **Brouillard de Guerre** : Les zones non achetées sont couvertes par des nuages ou un brouillard semi-transparent.
- **Dévoilement** : Lors de l'achat, les nuages se dissipent (fade out + scale up) pour révéler le nouveau terrain.
- **Clôtures** : Les clôtures délimitant le zoo se déplacent automatiquement vers la nouvelle limite.