Projet n°1 : Dessine ta rue avec la POO !
Numérique et sciences informatiques
Projet : Créer et représenter une "rue" en utilisant la POO
Le but de ce projet est de créer et représenter des immeubles à l'aide d'une classe `Immeuble`, en utilisant des méthodes pour dessiner la porte, les fenêtres et le toit.
Cahier des charges
Voici un exemple de rendu que votre programme doit produire lorsque vous l'exécuterez :
Pour cela, vous utiliserez le module turtle
, qui permet de suivre les mouvements d’une tortue (symbolisée par une flèche) dans une fenêtre graphique en fonction des instructions que vous lui donnerez.
Contraintes à respecter :
- Les immeubles doivent avoir au minimum un rez-de-chaussée et au maximum 4 étages (soit 5 niveaux au total).
- Chaque immeuble a une couleur unique pour toute la façade.
- Le rez-de-chaussée comporte une porte unique.
- Le reste peut être personnalisé à votre convenance (fenêtres, toit, etc.).
Le code suivant permet d'accélérer le déplacement de la tortue
turtle.delay(0) # trace rapidement
ainsi qu'un : tuto pour turtle .
Le code du programme :
Entraînement 1 :
Modifiez et complétez le code de la classe Immeuble
pour permettre la construction d'un immeuble avec ses différents éléments (porte, fenêtres, toit).
class Immeuble :
'''
Paramètres
classe construisant un immeuble
x, y : coordonnées de la base de l'étage (coin gauche)
largeur : largeur d'un étage
hauteur : hauteur d'un étage
couleur : couleur de l'immeuble
n : nombre d'etages de l'immeuble
'''
def __init__(self, x, y, hauteur, largeur, couleur, n):
self.x = x
self.y = y
self.hauteur = hauteur
self.largeur = largeur
self.couleur = couleur
self.n = n
def tracer_etage(self):
'''Dessine un étage de l'immeuble.'''
turtle.penup()
turtle.goto(self.x, self.y)
turtle.pendown()
turtle.fillcolor(self.couleur)
turtle.begin_fill()
for _ in range(2):
turtle.forward(self.largeur)
turtle.left(90)
turtle.forward(self.hauteur)
turtle.left(90)
turtle.end_fill()
turtle.penup()
def tracer_fenetre(self):
'''Dessine une fenêtre à chaque étage.'''
# À compléter
def tracer_porte(self):
'''Dessine la porte du rez-de-chaussée.'''
# À compléter
def tracer_toit(self):
'''Dessine le toit de l'immeuble.'''
# À compléter
Exercice 2 : Créer plusieurs immeubles
Utilisez la fonction random
pour créer les instances immeuble_1
, immeuble_2
, immeuble_3
, immeuble_4
, et immeuble_5
avec des paramètres aléatoires.
Exercice 3 : Améliorer la ville
Ajoutez des éléments supplémentaires pour améliorer la représentation de votre ville : couleurs aléatoires, nombre d'étages aléatoire, routes, lampadaires, etc.