Aller au contenu principal

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

  1. Implémenter une simulation tour par tour.
  2. Chaque civilisation planifie ses actions dans une pile locale (LIFO).
  3. Certaines actions peuvent générer des événements globaux :
    • urgents → pile d’urgences globale (LIFO)
    • moins urgents → file globale d’événements (FIFO)
  4. Traiter les piles et files dans le bon ordre pour simuler la priorité des actions.
  5. 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 locale
    • appliquer_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() :
      1. dépile les actions de chaque civilisation (pile locale) → applique
      2. traite la pile d’urgences
      3. défile la file d’événements
    • afficher_etat() : affiche ressources, actions et événements

Structures de données

StructureUtilisationRègle
Pile locale (LIFO)Actions planifiées par la civilisationDernière action planifiée → appliquée en premier
Pile globale d’urgences (LIFO)Événements urgents générés par certaines actionsTraitement immédiat avant tout le reste
File globale d’événements (FIFO)Événements normaux ou planifiésPremier arrivé → premier traité

Ressources et actions

  • Or : permet de construire bâtiments ou armées
  • Nourriture : croissance population / développement
  • Science : recherches et technologies

Déroulement d’un tour

  1. Planification : chaque civilisation empile ses actions locales.
  2. Traitement des piles locales : chaque civilisation dépile 1 ou plusieurs actions → effet appliqué.
  3. Traitement pile globale d’urgences : tous les événements urgents sont appliqués avant tout le reste.
  4. Traitement file globale : défile et applique les événements moins urgents.
  5. Affichage : ressources et état des civilisations, file et pile.
remarque

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

  1. Planification :

    • A empile « Construire bâtiment »
    • B empile « Attaquer C »
    • C empile « Rechercher technologie »
  2. 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
  3. Pile globale d’urgences :

    • Dépile Riposte(C,B) → B perd 2 ressources
  4. File globale : vide pour ce tour

  5. 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.