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
etJeu
. - La classe
Jeu
devra contenur (entre autres):- un attribut
grille
: un tableau d'objetsCellule
- une méthode
actualisation
(ouupdate
) qui consistera à actualiser l'état de la grille (c'est à dire de chacune de ses cellules) ainsi qu'à afficher la grille.
- un attribut
- 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 |
|
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 |
Proposition de correction
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
|