Projet python PeiP1 : Polytech city



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 :
  1. une ou plusieurs boîtes à outils permettant de dessiner les élèments du décor (maisons, écoles, parcs, ...)
  2. un fichier polytechCity.py qui permet de lancer votre jeu
  3. 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.

Critères d'évaluation

Votre projet sera évalué selon les critères suivants :
  1. Gestion du projet et qualité de la documentation (sur 5 pts)
  2. Exécution (sur 5 pts)
  3. Code (sur 5 pts)
  4. Structure (sur 5 pts)