Projet n°1 : Dessine ta rue avec la POO !

Numérique et sciences informatiques

donnees

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 :

Exemple d'immeuble en Python Exemple d'immeuble en Python
Exemples de rendu

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.