From bd1b6dcec8d5ab567700e8406fced1f554c4e80e Mon Sep 17 00:00:00 2001 From: "Louis.L" Date: Thu, 20 Oct 2022 16:53:05 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'rue.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rue.py | 91 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 31 deletions(-) diff --git a/rue.py b/rue.py index bbb01fe..6a1a140 100644 --- a/rue.py +++ b/rue.py @@ -8,17 +8,29 @@ import random # Fonction gestion des données lesCouleurs = ['red', 'blue', 'green', 'violet', 'yellow', 'orange', 'magenta'] -def determiner_immeuble(numero:int, valeurs:list) -> dict: +def determiner_immeuble(numero:int) -> dict: caracteristiques = {} - caracteristiques['couleur_facade'] = valeurs[2] # determine les couleurs pour les immeubles + caracteristiques['couleur_facade'] = choisir_couleur(lesCouleurs) caracteristiques['numero'] = numero - caracteristiques['coordonnees'] = -350 + numero * 170 # coordonnée de départ pour la construction des immeubles - caracteristiques['etage'] = valeurs[3] # determine le nombre d'etages de l'immeuble - caracteristiques['porte'] = valeurs[4] # determine la position de la porte - caracteristiques['toit_variant'] = valeurs[5] # determine la forme du toit, 1 pour un toit en triangle et 2 en rectangle + 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): @@ -26,56 +38,69 @@ def dessiner_facade(informations:dict): facade['écriture'] = 'blue' facade['fond'] = informations['couleur_facade'] facade['épaisseur'] = 1 - x0 = informations['coordonnees'] # determine la coordonnée de depart - hauteur = informations['etage'] * 80 # determine la hauteur de la facade selon le nombre d'etages - rectangle(140, hauteur, facade, (x0, -200)) # dessine la facade de l'immeuble + x0 = informations['coordonnees'] + hauteur = informations['etage'] * 80 + rectangle(140, hauteur, facade, (x0, -200)) def dessiner_porte(informations:dict): - porte = {} # pour faire la "traduction" entre les clés de ce module et les clés du module formes + porte = {} porte['écriture'] = 'brown' porte['fond'] = 'brown' porte['épaisseur'] = 1 - x0 = informations['coordonnees'] # determine la coordonnée de depart - position = informations['porte'] # determine la positition de la porte - rectangle(30, 50, porte, (x0 + (position * 40) -25, -200)) # dessine la porte de l'immeuble + x0 = informations['coordonnees'] + position = informations['porte'] + rectangle(30, 50, porte, (x0 + (position * 40) -25, -200)) def dessiner_fenetres(informations:dict): - fenetre = {} # pour faire la "traduction" entre les clés de ce module et les clés du module formes - fenetre['écriture'] = 'black' - fenetre['fond'] = 'cyan' + fenetre = {} + fenetre['écriture'] = 'black' + fenetre['fond'] = 'cyan' fenetre['épaisseur'] = 1 - x0 = informations['coordonnees'] # determine la coordonnée de depart - for etage in range(0,informations['etage']): # construction des 3 fenetres pour chaque étage étage selon la hauteur du batiment - rectangle(30, 30, fenetre, (x0 + (1 * 40) -25, -180 + etage*80)) # fenetre de gauche - rectangle(30, 30, fenetre, (x0 + (1 * 80) -25, -180 + etage*80)) #fenetre du centre - rectangle(30, 30, fenetre, (x0 + (1 * 120) -25, -180 + etage*80)) #fenetre de droite + 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 = {} # pour faire la "traduction" entre les clés de ce module et les clés du module formes + toit = {} toit['écriture'] = 'black' toit['fond'] = 'black' toit['épaisseur'] = 1 x0 = informations['coordonnees'] hauteur = informations['etage'] * 80 - variant = random.randint(1,2) # determine le type du toit - if informations['toit_variant'] == 1: # si le variant du toit est égale a 1 - triangle_isocele(50, 140, toit,(x0,hauteur - 200)) # dessine un toit en triangle - else: # sinon - rectangle(180, 10, toit,(x0-20, hauteur - 200)) # dessine un toit en rectangle + 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: - i = random.randint(0,len(lesCouleurs)-1) # determine aléatoirement la couleur parmis celle dans le tableau LesCouleurs - return lesCouleurs[i] # renvoie la couleur chosie + '''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 @@ -83,4 +108,8 @@ if __name__ == '__main__': for x in range(4): infos_immeuble = determiner_immeuble(x) - dessiner_immeuble(infos_immeuble) \ No newline at end of file + dessiner_immeuble(infos_immeuble) + + + # à compléter avec d'autres fonctions pour le reste : toit, fenêtres... +