Projet 1 : Mini‑Civilization
Le projet s’inspire du Festival International de Géographie (FIG) 2025, dont le thème est « Pouvoir ».
Ce festival explore les rapports de force, d’influence et de domination entre acteurs politiques, économiques ou sociaux à l’échelle locale, nationale et mondiale.
En informatique, il est possible de modéliser ces rapports de pouvoir à travers des civilisations qui interagissent entre elles : alliances, conflits, échanges ou développement technologique.
Ce projet consiste donc à créer une simulation simplifiée d’un monde de civilisations, où chaque acteur planifie des actions, réagit aux événements et voit son influence évoluer.
- Utiliser la programmation orientée objet (POO) pour représenter civilisations, actions et événements.
- Manipuler des structures linéaires (piles et files) pour gérer l’ordre d’exécution des décisions et événements.
- Développer une simulation stratégique et interactive, inspirée du thème du FIG 2025 et du jeu Civilization.
Objectifs du projet
- Implémenter une simulation tour par tour.
- Chaque civilisation planifie ses actions dans une pile locale (LIFO).
- Certaines actions peuvent générer des événements globaux :
- urgents → pile d’urgences globale (LIFO)
- moins urgents → file globale d’événements (FIFO)
- Traiter les piles et files dans le bon ordre pour simuler la priorité des actions.
- Afficher l’état des civilisations, de leurs ressources et des événements dans la console.
Classes et structures conseillées
Classe Civilisation
- Attributs : nom, ressources (or, nourriture, science), pile d’actions locales
- Méthodes :
planifier_action(action)→ empile l’action dans la pile localeappliquer_action(action, simulation)→ modifie ressources ou génère événements
Classe Action
- Attributs : type (construction, attaque, commerce…), cible éventuelle, effet (valeur de ressource)
- Méthodes :
executer(cible, simulation)→ applique l’effet sur la cible ou la simulation
Classe Evenement
- Attributs : type, source, cible, intensité, urgent (booléen)
- Méthodes :
executer()→ applique l’effet sur la cible
Classe Simulation
- Attributs :
- liste des civilisations
- pile globale d’urgences
- file globale d’événements
- tour courant
- Méthodes :
executer_tour():- dépile les actions de chaque civilisation (pile locale) → applique
- traite la pile d’urgences
- défile la file d’événements
afficher_etat(): affiche ressources, actions et événements
Structures de données
| Structure | Utilisation | Règle |
|---|---|---|
| Pile locale (LIFO) | Actions planifiées par la civilisation | Dernière action planifiée → appliquée en premier |
| Pile globale d’urgences (LIFO) | Événements urgents générés par certaines actions | Traitement immédiat avant tout le reste |
| File globale d’événements (FIFO) | Événements normaux ou planifiés | Premier arrivé → premier traité |
Ressources et actions
- Ressources
- Actions
- Or : permet de construire bâtiments ou armées
- Nourriture : croissance population / développement
- Science : recherches et technologies
- Construire bâtiment → coûte or, donne bonus science
- Rechercher technologie → coûte science, augmente futur rendement
- Attaquer un voisin → réduit ressources de la cible, peut générer événement urgence (riposte)
- Échanger commerce → transfère or/nourriture entre deux civilisations
- Catastrophe / événement aléatoire → généré automatiquement dans pile/file globale
Vous pouvez définir des valeurs simples pour chaque action (ex: construire = –3 or, +1 science).
Déroulement d’un tour
- Planification : chaque civilisation empile ses actions locales.
- Traitement des piles locales : chaque civilisation dépile 1 ou plusieurs actions → effet appliqué.
- Traitement pile globale d’urgences : tous les événements urgents sont appliqués avant tout le reste.
- Traitement file globale : défile et applique les événements moins urgents.
- Affichage : ressources et état des civilisations, file et pile.
Cette structure permet de visualiser clairement LIFO vs FIFO, et de simuler la priorité des événements.
Exemple concret
Initialisation
- Civilisations : A, B, C
- Ressources :
- A : or=10, nourriture=5, science=3
- B : or=8, nourriture=6, science=2
- C : or=5, nourriture=7, science=4
Tour 1
-
Planification :
- A empile « Construire bâtiment »
- B empile « Attaquer C »
- C empile « Rechercher technologie »
-
Traitement piles locales :
- A dépile → perd 3 or, gagne 1 science
- B dépile → C perd 2 ressources, génère événement urgence Riposte(C,B) → pile globale
- C dépile → dépense 2 science, gagne 1 science futur
-
Pile globale d’urgences :
- Dépile Riposte(C,B) → B perd 2 ressources
-
File globale : vide pour ce tour
-
Affichage :
Civilisation A : or=7, nourriture=5, science=4 Civilisation B : or=6, nourriture=6, science=2 Civilisation C : or=5, nourriture=5, science=5 Pile globale : vide File globale : vide
Remarques globales
- Chaque action planifiée peut modifier ressources ou générer des événements.
- Les piles et files déterminent l’ordre exact d’application : LIFO = priorité immédiate, FIFO = attente.
- L’interface graphique viendra après la version console pour visualiser les piles, files et ressources.