81 lines
2.9 KiB
Markdown
81 lines
2.9 KiB
Markdown
|
|
# Jalons — Le Jeu de la Vie
|
|||
|
|
|
|||
|
|
> Progression suggérée sur ~10 séances (septembre → février)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 1 — Analyse et modélisation (Séances 1-2)
|
|||
|
|
|
|||
|
|
**Objectif :** Comprendre le problème et choisir les structures de données.
|
|||
|
|
|
|||
|
|
- Lire les règles de Conway et les reformuler avec ses propres mots
|
|||
|
|
- Dessiner à la main quelques générations d'une configuration simple (ex. 3 cellules en ligne)
|
|||
|
|
- Choisir une représentation de la grille : liste 2D, dictionnaire `{(i,j): état}` ?
|
|||
|
|
- Écrire la fonction `creer_grille(n, m)` → grille vide de n lignes et m colonnes
|
|||
|
|
- Écrire la fonction `afficher_grille(grille)` → affichage terminal
|
|||
|
|
|
|||
|
|
**Questions à se poser :**
|
|||
|
|
- Comment représenter une cellule morte / vivante en Python ?
|
|||
|
|
- Que se passe-t-il aux bords de la grille ?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 2 — Règles du jeu (Séances 3-4)
|
|||
|
|
|
|||
|
|
**Objectif :** Implémenter le cœur de la simulation.
|
|||
|
|
|
|||
|
|
- Écrire `compter_voisins(grille, i, j)` → nombre de voisins vivants de la cellule (i, j)
|
|||
|
|
- Écrire `etat_suivant(etat, nb_voisins)` → applique les 4 règles, renvoie le nouvel état
|
|||
|
|
- Écrire `generation_suivante(grille)` → calcule la grille à l'étape suivante
|
|||
|
|
- Tester manuellement sur un petit exemple (3×3)
|
|||
|
|
|
|||
|
|
**Point d'attention :** la prochaine génération doit être calculée **simultanément** pour toutes les cellules — on ne modifie pas la grille en cours de calcul.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 3 — Simulation et configurations (Séances 5-6)
|
|||
|
|
|
|||
|
|
**Objectif :** Lancer une simulation complète et observer des comportements.
|
|||
|
|
|
|||
|
|
- Écrire `simuler(grille, nb_generations)` → boucle principale
|
|||
|
|
- Tester sur les configurations classiques :
|
|||
|
|
- **Bloc** (stable)
|
|||
|
|
- **Clignotant** (oscillateur période 2)
|
|||
|
|
- **Planeur** (se déplace)
|
|||
|
|
- Observer : certaines configurations sont-elles stables ? Oscillantes ? Chaotiques ?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 4 — Affichage graphique (Séances 7-8)
|
|||
|
|
|
|||
|
|
**Objectif :** Rendre la simulation visuelle et interactive.
|
|||
|
|
|
|||
|
|
- Choisir une bibliothèque graphique : Pyxel, matplotlib (animation), tkinter
|
|||
|
|
- Afficher la grille avec des cellules colorées
|
|||
|
|
- Animer la simulation pas à pas avec un délai configurable
|
|||
|
|
- (Extension) Permettre à l'utilisateur de cliquer pour activer/désactiver des cellules
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 5 — Finitions et documentation (Séances 9-10)
|
|||
|
|
|
|||
|
|
**Objectif :** Préparer le rendu et le Grand Oral.
|
|||
|
|
|
|||
|
|
- Nettoyer le code, ajouter des docstrings
|
|||
|
|
- Rédiger un README personnel décrivant le projet et les choix techniques
|
|||
|
|
- Compléter le `SUIVI.md`
|
|||
|
|
- Préparer 2-3 questions pour le Grand Oral (voir `SUIVI.md`)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Idées d'extension avancée
|
|||
|
|
|
|||
|
|
- **Grille torique** : `i % n` et `j % m` pour que les bords se rejoignent
|
|||
|
|
- **Statistiques** : tracer le nombre de cellules vivantes par génération (matplotlib)
|
|||
|
|
- **Chargement de patterns** : lire des fichiers `.rle` (format standard des patterns Conway)
|
|||
|
|
- **Détection de stabilité** : arrêter la simulation quand la grille ne change plus
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Auteur : Florian Mathieu — Licence CC BY NC
|