|
|
|
# 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...
|
|
|
|
|