Aller au contenu

Projet 1⚓︎

Le jeu de la vie de John Conway⚓︎

Énoncé

On considère une grille - théoriquement infinie - dont les cases appellées cellules peuvent prendre deux états distincts : «vivante» ou «morte».

Une cellule possède huit voisins : les cellules adjacentes horizontalement, verticalement et diagonalement.

À chaque génération, les cellules peuvent changer d'état ou conserver leur état selon les règles suivantes:

  • si une cellule morte possède exactement 3 cellules voisines vivantes, alors elle devient vivante (elle naît);
  • si une cellule vivante possède 2 ou 3 cellules vivantes, alors elle reste vivante, sinon elle meurt.

L'objectif est de simuler, génération après génération, l'état de la grille.

Exemple:

Consignes

  • Le programme principal devra contenir deux classes: Cellule et Jeu.
  • La classe Jeu devra contenur (entre autres):
    • un attribut grille: un tableau d'objets Cellule
    • une méthode actualisation (ou update) qui consistera à actualiser l'état de la grille (c'est à dire de chacune de ses cellules) ainsi qu'à afficher la grille.
  • L'état initial de la grille sera choisi aléatoirement.
  • Utiliser le module pygame pour animer la grille génération après génération.

La boucle des événements sera donc réduite à (avec par exemple j instance de la classe Jeu):

1
2
3
4
5
6
7
8
9
continuer = True
while continuer:
    for evenement in pygame.event.get(): 
        if evenement.type == QUIT:
            continuer = False

    j.actualisation()
    pygame.display.flip()
    pygame.time.delay(100)

Grille d'évaluation

Sur ce projet, vous serez évalués sur la grille suivante:

Item Contenu Points
POO Les classes sont correctement conçues et l'interface est cohérente et claire. L'utilisation de la POO est maîtrisée (utilisation de setters par ex.). 5
Travail de groupe Les tâches sont définies et réparties au sein du groupe 3
Projet abouti Le projet tourne sans erreur et répond aux consignes. 4
Qualité du code Code aéré, spécifié, lisible, noms de variables pertinents... 4
Oral Restitution orale 4
Total 20
Bonus Code en 🇬🇧 2
Malus Code récupéré sur le web (ChatGPT, forums, github, etc) -50, Game Over