Le but de ce projet est de réaliser Polytech city, une version minimaliste du jeu simcity en utilisant le module turtle.
Nous vous fournissons une version de départ très simple avec une grille qui contient des cases vides et des cases contenant de l'eau. Le moteur de jeu permet de construire des maisons. A partir de cette version simple, vous devez créer votre propre jeu Polytech city.
L'objectif pédagogique du projet est de vous faire décomposer un problème assez conséquent en sous-problèmes que vous pourrez résoudre plus facilement. Les points importants seront donc la décomposition en modules et fonctions, la bonne organisation du code, et la bonne répartition des tâches entre les membres du binôme.
Afin de vous aider à démarrer, vous devez commencer par effectuer ce TD de préparation.
Principes du jeu
Il s'agit de construire une ville avec le plus d'habitants possible, le nombre d'habitants joue le rôle du score. Le jeu se joue au tour par tour (année par année).
On a un budget initial de 200 Sesterces de Polytech, puis, chaque année, on perçoit des impôts en fonction du nombre d'habitants. Le taux d'imposition est de 10%. Le nombre d'habitants est fonction du nombre de maisons. Une maison peut contenir 5 personnes et un immeuble 50 personnes. Quand on construit une maison ou un immeuble, on tire aléatoirement le nombre d'occupants.
À chaque tour, on utilise ensuite son budget pour construire des bâtiments (maisons, immeubles, commerces, espaces verts, loisirs, écoles, routes...)
On ne peut construire un bâtiment que sur un emplacement vierge, mais on peut démolir des bâtiments au besoin, la démolition ayant un certain coût.
Les habitants ont un niveau de satisfaction, initialement élevé (80% des habitants sont heureux).
Mais plus la ville se développe, plus ils sont exigeants en terme de commerces, loisirs, espaces verts, infrastructures, etc.
S'il n'y a pas assez de bâtiments d'un certain type par habitant, le taux de satisfaction diminue.
En plus du coût de construction, certains bâtiments ont des frais d'entretien annuels (par exemple, une école, un commissariat de police, une caserne de pompier...)
On perd le jeu si les finances de la ville deviennent négatives ou si le taux de satisfaction devient trop bas.
Voici les valeurs numériques que vous pouvez utiliser pour les bâtiments (vous pouvez les modifier et ajouter d'autres critères) :
Action
Coût
construction d'une maison
30
construction d'un immeuble
60
destruction d'une maison
20
destruction d'un immeuble
30
Travail à réaliser
Ce projet sera réalisé en binômes, le choix des binômes est libre. Afin de gérer les differences de niveaux entre les élèves, nous passerons un contrat pédagogique avec chaque binôme. Ce contrat permettra de choisir entre 3 versions possibles. Les enseignants vous guideront dans le choix de votre version. Après avoir passé votre contrat, vous devrez vous y tenir (i.e. un binôme débutant qui choisit la version la plus facile sera noté de la même façon qu'un binôme avancé qui choisira la version difficile).
Version de base
On se limite aux règles énoncées plus haut, en implémentant au moins 2 types d'habitation (maison et immeuble) et au moins 5 autres types de bâtiments dont 2 au moins demandent des frais d'entretien. L'ajout ou la suppression de l'un de ces 5 bâtiments a un effet sur le taux de bonheur des habitants.
Version +
En plus de la version de base, on peut modifier le taux d'imposition, mais celui-ci a un effet sur le taux de satisfaction. Par ailleurs, des évènements (positifs ou négatifs) touchent aléatoirement la ville (tempête, incendie, épidémie, cambriolages, ville sélectionnée pour l'exposition universelle ou les JO, etc.). Des bâtiments permettent de limiter les dégâts (ex: caserne de pompier, commissariat, hôpital)...
Version ++
En plus de la version précédente, on a certains bâtiments qui font plus d'une case (stade ou aéroport par exemple). On implémente également une gestion des scores (scores mémorisés dans un fichier d'une partie sur l'autre). La satisfaction se calcule maison par maison et tient compte de la distance entre la maison et les différentes facilités (commerce, école, espace vert...)
Quelle que soit la version chosie, rien ne vous empêche de faire preuve d'imagination et d'inventer un univers à vous sur une planette inconnue...
Production attendue
Au terme de ce projet, vous devrez fournir :
une ou plusieurs boîtes à outils permettant de dessiner les élèments du décor (maisons, écoles, parcs, ...)
un fichier polytechCity.py qui permet de lancer votre jeu
un rapport rapport.pdf (PAS de .docx) entre 150 et 250 lignes contenant les règles du jeu, expliquant la structure de votre projet (décomposition en fonctions, en modules, organisation du code, ...) ,
la répartition du travail entre les deux membres du binôme, et les difficultés rencontrées (ainsi que les solutions proposées, comme par exemple, l'utilisation de fonctions complexes du module turtle), et le travail qui reste à faire.
La première ligne de chaque fichier doit contenir le nom des deux membres du binôme.
Déroulement du projet
Pour mener à bout votre projet, il est indispensable de travailler chez vous. Certaines séances de TD seront consacrées au projet, mais en partie seulement.
Déclaration des binômes avant le lundi 30 novembre 22h pour G2,G3,G4,G5 et avant le mercredi 2 décembre 22h pour G1 : vous devez envoyer à
votre responsable de TD un mail dont le sujet est binome projet
peiP1 et qui contient la déclaration de votre
binôme (e.g. Groupe 5 : Pierre Roland est en binôme avec Lucie Dupont),
Rendu intermédiaire avant le lundi 14 décembre 22h. Vous devez envoyer à
votre responsable de TD un mail dont le sujet est projet
peip1 rendu 1 et qui contient les fichiers ci-dessus dans l'état actuel d'avancement. Ce rendu intermédiaire sert à s'assurer que vous avez suffisemment avancé sur votre projet; l'enseignant mettra en garde les binômes qui sont en difficulté.
Rendu final du projet : avant le lundi 11 Janvier 22h: vous devez envoyer à
votre responsable de TD un mail dont le sujet est projet
peip1 rendu 2 et qui contient tous les fichiers de votre projet ainsi que le rapport final au format pdf.
Démonstration du projet : vous serez interrogés
15mn sur votre projet pendant les créneaux de TD de la semaine
du 11 Janvier. Il s'agira d'une part de tester votre
projet en le lançant dans un interprète
Python et d'autre part d'interroger les deux membres du
binôme.
Critères d'évaluation
Votre projet sera évalué selon les critères suivants :
Gestion du projet et qualité de la documentation (sur 5 pts)
Respect des dates de rendu (déclaration binômes, rendu intermédiaire, livraison du projet)
Respect des consignes (nom des fichiers, sujet des e-mails)
Qualité des commentaires
Respect des conventions de code (choix des identificateurs)
Clarté du rapport
Exécution (sur 5 pts)
Respect du contrat passé (présence des fonctionnalités prévues dans le contrat)
Test du programme en séance : robustesse (marche-t-il dans tous les cas), ergonomie (est-il facile à utiliser)
Imagination
Code (sur 5 pts)
utilisation des variables
écriture des conditionnelles
écriture des boucles
utilisation des listes
Structure (sur 5 pts)
choix des fonctions
choix judicieux des paramètres, des valeurs de retour