# Importation from formes import triangle_equilateral from formes import triangle_isocele from formes import rectangle import random # Fonction gestion des données lesCouleurs = ['red', 'blue', 'green', 'violet', 'yellow', 'orange', 'magenta'] def determiner_immeuble(numero:int) -> dict: caracteristiques = {} caracteristiques['couleur_facade'] = choisir_couleur(lesCouleurs) caracteristiques['numero'] = numero caracteristiques['coordonnees'] = -350 + numero * 170 caracteristiques['etage'] = random.randint(1,6) caracteristiques['porte'] = random.randint(1,3) caracteristiques['toit_variant'] = random.randint(1,2) caracteristiques['fenetre'] = 1 return caracteristiques def determiner_immeuble_enfant(numero:int, tab:list) -> dict: caracteristiques = {} caracteristiques['couleur_facade'] = tab[0] caracteristiques['numero'] = numero caracteristiques['coordonnees'] = -350 + numero * 170 caracteristiques['etage'] = tab=[1] caracteristiques['porte'] = tab=[2] caracteristiques['toit_variant'] = tab=[3] caracteristiques['fenetre'] = 1 return caracteristiques # Fonctions d'interface graphique def dessiner_facade(informations:dict): facade = {} # pour faire la "traduction" entre les clés de ce module et les clés du module formes facade['écriture'] = 'blue' facade['fond'] = informations['couleur_facade'] facade['épaisseur'] = 1 x0 = informations['coordonnees'] hauteur = informations['etage'] * 80 rectangle(140, hauteur, facade, (x0, -200)) def dessiner_porte(informations:dict): porte = {} porte['écriture'] = 'brown' porte['fond'] = 'brown' porte['épaisseur'] = 1 x0 = informations['coordonnees'] position = informations['porte'] rectangle(30, 50, porte, (x0 + (position * 40) -25, -200)) def dessiner_fenetres(informations:dict): fenetre = {} fenetre['écriture'] = 'black' fenetre['fond'] = 'cyan' fenetre['épaisseur'] = 1 x0 = informations['coordonnees'] position = informations['fenetre'] for etage in range(0,informations['etage']): rectangle(30, 30, fenetre, (x0 + (position * 40) -25, -180 + etage*80)) rectangle(30, 30, fenetre, (x0 + (position * 80) -25, -180 + etage*80)) rectangle(30, 30, fenetre, (x0 + (position * 120) -25, -180 + etage*80)) def dessiner_toit(informations:dict): toit = {} toit['écriture'] = 'black' toit['fond'] = 'black' toit['épaisseur'] = 1 x0 = informations['coordonnees'] hauteur = informations['etage'] * 80 variant = random.randint(1,2) if informations['toit_variant'] == 1: triangle_isocele(50, 140, toit,(x0,hauteur - 200)) else: rectangle(180, 10, toit,(x0-20, hauteur - 200)) def choisir_couleur(lesCouleurs:list)->int: '''Choisi une couleur aléatoirement''' i = random.randint(0,len(lesCouleurs)-1) #choisi unn couleur aléatoire dans le tableau lesCouleurs return lesCouleurs[i] def dessiner_immeuble(informations:dict): dessiner_facade(informations) dessiner_toit(informations) dessiner_fenetres(informations) dessiner_porte(informations) # à compléter avec d'autres fonctions pour le reste : toit, fenêtres... def dessiner_rue_enfant(ensemble:list): for i in range(len(ensemble)): infos_immeuble = determiner_immeuble_enfant(i, ensemble[i]) dessiner_immeuble(infos_immeuble) # Programme principal if __name__ == '__main__': for x in range(4): infos_immeuble = determiner_immeuble(x) dessiner_immeuble(infos_immeuble) # à compléter avec d'autres fonctions pour le reste : toit, fenêtres...