"""Ce fichier permet de dessiner une rue à l'aide des fonctions suivantes : + dessiner_rue_aleatoire() + dessiner_rue_decrite(rue:dict) """ # Importation import dessiner as ds import turtle as trt import random as rd # Constantes LARGEUR_IMMEUBLE = 140 # Fonction privées def immeuble_aleatoire(numero:int) -> dict: informations = {} informations['couleur_facade'] = couleur_aleatoire() informations['numero'] = numero informations['etages'] = rd.randint(2,6) return informations def couleur_aleatoire() -> str: liste = ["red","blue","yellow","black","orange","purple","brown","pink","green", "olive", "silver", "teal", "darkcyan", "aqua"] couleur = rd.randint(0,len(liste)-1) return liste[couleur] def coordonnees_facade(immeuble:dict) -> tuple: x_gauche = -200 + 200 * immeuble['numero'] y_bas = -100 return (x_gauche, y_bas) def coordonees_fenetre(immeuble:dict) -> tuple: x_gauche, y_bas = coordonnees_facade(immeuble) x_gauche = x_gauche - 100 y_bas = y_bas + 20 return (x_gauche, y_bas) def coordonees_fenetre_etage(immeuble:dict) -> tuple: x_gauche, y_bas = coordonees_fenetre(immeuble) x_gauche = x_gauche + 45 return (x_gauche, y_bas) def dessiner_facade(immeuble:dict) -> None: # Traduction des données de rue vers dessiner crayon = {} crayon['écriture'] = "grey" crayon['fond'] = immeuble['couleur_facade'] crayon['épaisseur'] = 3 x, y = coordonnees_facade(immeuble) # désempaquatage du couple cote = LARGEUR_IMMEUBLE # Demande d'affichage for i in range(immeuble['etages']): ds.rectangle(80, cote, crayon, (x,y + i * 80)) def dessiner_porte(immeuble:dict) -> None: # Traduction des données de rue vers dessiner crayon = {} pass def dessiner_fenetre(immeuble:dict) -> None: crayon = {} crayon['écriture'] = 'white' crayon['fond'] = 'blue' crayon['épaisseur'] = 2 x, y = coordonees_fenetre(immeuble) cote = 30 ds.rectangle(cote, cote, crayon, (x,y)) def dessiner_fenetre_etage(immeuble:dict) -> None: crayon = {} crayon['écriture'] = 'white' crayon['fond'] = 'blue' crayon['épaisseur'] = 2 x, y = coordonees_fenetre_etage(immeuble) cote = 30 for i in range(2): ds.rectangle(cote, cote, crayon, (x + i * 45,y)) v = (x + i * 45,y) def dessiner_fenetre_immeuble(immeuble:dict) -> None: crayon = {} crayon['écriture'] = 'white' crayon['fond'] = 'blue' crayon['épaisseur'] = 2 x, y = coordonees_fenetre_etage(immeuble) cote = 30 for i in range(immeuble['etages']): x = -200 y = y + i * 80 for i in range(3): ds.rectangle(cote, cote, crayon, (x + i * 45,y)) def dessiner_immeuble(immeuble:dict) -> None: dessiner_facade(immeuble) dessiner_porte(immeuble) dessiner_fenetre(immeuble) dessiner_fenetre_etage(immeuble) dessiner_fenetre_immeuble(immeuble) # à compléter avec d'autres fonctions pour le reste : toit, fenêtres... def dessiner_rue_aleatoire() -> None: for n in range(4): informations_immeuble = immeuble_aleatoire(n) dessiner_immeuble(informations_immeuble) def dessiner_rue_decrite(rue:'?') -> None: pass # Programme principal if __name__ == '__main__': dessiner_rue_aleatoire()