# Spécifications : Billeterie ## Définition Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs. ## Fonctionnalités - **Entrée/Sortie** : Génère le flux de visiteurs. - **Vente de tickets** : Génère des revenus par visiteur entrant. - **Capacité** : Limite le nombre de visiteurs simultanés dans le zoo. ## Niveaux d'Amélioration (7 niveaux) - **Coût** : Progressif par palier. - **Effet** : Augmente le prix du ticket et la capacité maximale de visiteurs simultanés. - **Ratio** : 1 unité couvre 20 visiteurs simultanés max. # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) ```json { "id": "uuid", "type": "ticket_booth", "level": "integer (1-7)", "position": { "x": "int", "y": "int" }, "stats": { "total_entries": "integer", "daily_revenue": "integer", "current_queue_length": "integer" }, "entry_log": [ { "timestamp": "timestamp", "visitor_count": 5, "revenue": 50 } ], "iso_x": "integer", "iso_y": "integer", "z_index": "integer" } ``` ### Caractéristiques Initiales | Caractéristique | Valeur Initiale (Niv 1) | | :--- | :--- | | Prix Ticket | 10 pièces | | Capacité Max | 20 visiteurs | ## 7. Progression ### Tableau des Upgrades | Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction | | :--- | :--- | :--- | :--- | :--- | | 1 | 0 (Base) | 10 | 20 | 0s | | 2 | 200 | 12 | 40 | 0s | | 3 | 400 | 15 | 70 | 0s | | 4 | 800 | 18 | 110 | 0s | | 5 | 1600 | 22 | 160 | 0s | | 6 | 3200 | 28 | 220 | 0s | | 7 | 6400 | 35 | 300 | 0s | ## 8. Logique et Interfaces ### Pseudo-code Impacts ```python def process_entry(zoo): potential_visitors = calculate_attraction_flow(zoo) # Gestion de la file d'attente zoo.billeterie.current_queue_length += potential_visitors # Traitement des entrées (limité par la vitesse du guichet) entries_per_tick = get_entry_speed(zoo.billeterie.level) actual_entries = min(zoo.billeterie.current_queue_length, entries_per_tick) # Vérification capacité zoo if zoo.current_visitors + actual_entries > zoo.billeterie.capacity: actual_entries = zoo.billeterie.capacity - zoo.current_visitors emit_event("ZOO_FULL") zoo.billeterie.current_queue_length -= actual_entries for _ in range(actual_entries): spawn_visitor() player.add_coins(zoo.billeterie.ticket_price) ``` ### Messages d'Infos / Alerte | ID | Niveau | Message | | :--- | :--- | :--- | | `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." | | `VIP_BUS` | Info | "Un bus de touristes arrive !" | | `QUEUE_LONG` | Warning | "La file d'attente est trop longue, des visiteurs partent !" | # 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) ### Consultation **Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau. **Description UI** : **Bottom Sheet** ou Panneau Latéral affichant le niveau actuel, la capacité, le prix du ticket et les revenus du jour. **Emplacement** : Case Billeterie sur la grille du zoo. **Intégration** : Bâtiment fixe. **Navigation** : Clic -> Ouverture Panneau -> Fermeture. **Événements** : `CLICK_BILLETERIE`. #### Assets - **Musiques** : Ambiance "Hall de Gare" (brouhaha léger). - **Sons** : `ui_open.mp3` - **Graphiques** : Pixel Art, style guichet. - **Images** : `billeterie_lvl[1-7].png` - **Vidéos** : Flux vidéo surveillance (fictif, décoratif). - **Animations** : Légère surbrillance au survol. - **Couleurs** : Palette UI standard. - **Textes** : "Billeterie", "Niveau X", "Revenus : Y". - **Formes** : Carré (case). ### Vue Isométrique - **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet. - **Portiques** : Animation d'ouverture/fermeture des barrières.