|
|
|
@ -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) |
|
|
|
|
dessiner_immeuble(infos_immeuble) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# à compléter avec d'autres fonctions pour le reste : toit, fenêtres... |
|
|
|
|
|
|
|
|
|