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.
Objectifs pédagogiques
- 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