"""Ce fichier permet de dessiner une rue à l'aide des fonctions suivantes : + dessiner_rue_aleatoire() + dessiner_rue_decrite(rue:dict) """ # Importation from dessiner import triangle_equilateral from dessiner import rectangle from random import choice # Constantes LARGEUR_IMMEUBLE = 140 # Fonction privées def immeuble_aleatoire(numero: int) -> dict: informations = {} informations['couleur_facade'] = couleur_aleatoire() informations['numero'] = numero informations['etages'] = etage_aleatoire() # Ajout de la hauteur des étages return informations def couleur_aleatoire() -> str: return choice(['red','light green','grey','sky blue','olive','seagreen','mediumaquamarine','peachpuff']) def etage_aleatoire() -> str: return choice([80,160,240,320]) def coordonnees_facade(immeuble:dict) -> tuple: x_gauche = -400+ 200 * immeuble['numero'] y_bas = -200 return (x_gauche, y_bas) def coordonnees_porte(immeuble:dict) -> tuple: x_gauche = -400+ 200 * immeuble['numero'] + choice([12.5,55,97.5]) y_bas = -200 return (x_gauche, y_bas) def dessiner_facade(immeuble: dict) -> None: # Traduction des données de rue vers dessiner crayon = {} crayon['écriture'] = "black" crayon['fond'] = immeuble['couleur_facade'] crayon['épaisseur'] = 1 x, y = coordonnees_facade(immeuble) # désempaquatage du couple cote = LARGEUR_IMMEUBLE etages = immeuble['etages'] # Utiliser la hauteur des étages depuis le dictionnaire # Demande d'affichage rectangle(cote, etages, crayon, (x, y)) def dessiner_porte(immeuble:dict) -> None: # Traduction des données de rue vers dessiner crayon = {} crayon['écriture'] = "black" crayon['fond'] = couleur_aleatoire() crayon['épaisseur'] = 1 x, y = coordonnees_porte(immeuble) # Demande d'affichage rectangle(30,50, crayon, (x,y)) def dessiner_toit(immeuble: dict) -> None: # Traduction des données de rue vers dessiner crayon = {} crayon['écriture'] = "black" crayon['fond'] = 'black' # Vous pouvez choisir une autre couleur si vous le souhaitez crayon['épaisseur'] = 1 x, y = coordonnees_facade(immeuble) cote = LARGEUR_IMMEUBLE hauteur = immeuble['etages'] # Utiliser la hauteur des étages depuis le dictionnaire y_toit = y + hauteur # Positionner le toit au-dessus de la façade # Demande d'affichage triangle_equilateral(cote, crayon, (x, y_toit)) def dessiner_immeuble(immeuble: dict) -> None: dessiner_facade(immeuble) dessiner_porte(immeuble) dessiner_toit(immeuble) # à compléter avec d'autres fonctions pour le reste : toit, fenêtres... # Fonction publiques 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()