You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.3 KiB
148 lines
4.3 KiB
1 year ago
|
import squelette_dessiner as ds
|
||
|
import turtle as trt
|
||
|
import random as rd
|
||
|
|
||
|
trt.bgcolor("lightskyblue")
|
||
|
|
||
|
# Constantes
|
||
|
|
||
|
LARGEUR_IMMEUBLE = 140
|
||
|
|
||
|
|
||
|
# Fonction privées
|
||
|
|
||
|
|
||
|
def immeuble_aleatoire(numero:int) -> dict:
|
||
|
informations = {}
|
||
|
informations['couleur_facade'] = couleur_aleatoire()
|
||
|
informations['numero'] = numero
|
||
|
informations['etages'] = rd.randint(2,5)
|
||
|
informations['toit'] = rd.randint(1,2)
|
||
|
return informations
|
||
|
|
||
|
def couleur_aleatoire() -> str:
|
||
|
y_bas = -100
|
||
|
return (x_gauche, y_bas)
|
||
|
|
||
|
def coordonees_fenetre(immeuble:dict) -> tuple:
|
||
|
x_gauche, y_bas = coordonnees_facade(immeuble)
|
||
|
x_gauche = x_gauche - 100
|
||
|
y_bas = y_bas + 20
|
||
|
return (x_gauche, y_bas)
|
||
|
|
||
|
def coordonees_fenetre_etage(immeuble:dict) -> tuple:
|
||
|
x_gauche, y_bas = coordonees_fenetre(immeuble)
|
||
|
x_gauche = x_gauche + 45
|
||
|
return (x_gauche, y_bas)
|
||
|
|
||
|
|
||
|
def dessiner_facade(immeuble:dict) -> None:
|
||
|
# Traduction des données de rue vers dessiner
|
||
|
pass
|
||
|
def dessiner_porte(immeuble:dict) -> None:
|
||
|
# Traduction des données de rue vers dessiner
|
||
|
crayon = {}
|
||
|
pass
|
||
|
|
||
|
def dessiner_toit(immeuble:dict) -> None:
|
||
|
# Traduction des données de rue vers dessiner
|
||
|
crayon = {}
|
||
|
crayon['écriture'] = "grey"
|
||
|
crayon['fond'] = immeuble['couleur_facade']
|
||
|
crayon['épaisseur'] = 3
|
||
|
x, y = coordonnees_facade(immeuble) # désempaquatage du couple
|
||
|
y = y + 0
|
||
|
cote = LARGEUR_IMMEUBLE
|
||
|
nb = immeuble['etages']
|
||
|
if immeuble['toit'] == 1:
|
||
|
ds.rectangle(80, cote, crayon, (x,y + nb * 80))
|
||
|
elif immeuble['toit'] == 2:
|
||
|
ds.triangle_isocele(cote, crayon, (x,y + nb * 80))
|
||
|
|
||
|
|
||
|
|
||
|
def dessiner_fenetre(immeuble:dict) -> None:
|
||
|
crayon = {}
|
||
|
crayon['écriture'] = 'white'
|
||
|
crayon['fond'] = 'blue'
|
||
|
crayon['écriture'] = 'black'
|
||
|
crayon['fond'] = 'brown'
|
||
|
crayon['épaisseur'] = 2
|
||
|
x, y = coordonees_fenetre(immeuble)
|
||
|
cote = 30
|
||
|
ds.rectangle(cote, cote, crayon, (x,y))
|
||
|
x, y = coordonnees_facade(immeuble)
|
||
|
position = rd.randint(0,2)
|
||
|
x = x -95 + 42.5*position
|
||
|
y = y
|
||
|
ds.rectangle(55, 30, crayon, (x,y))
|
||
|
|
||
|
def dessiner_fenetre_etage(immeuble:dict) -> None:
|
||
|
pass
|
||
|
|
||
|
|
||
|
def dessiner_fenetre(immeuble:dict, etage:int, position:int) -> None:
|
||
|
crayon = {}
|
||
|
crayon['écriture'] = 'white'
|
||
|
crayon['fond'] = 'blue'
|
||
|
crayon['épaisseur'] = 2
|
||
|
x, y = coordonees_fenetre_etage(immeuble)
|
||
|
x, y = coordonnees_facade(immeuble)
|
||
|
x = x -95 + 42.5*position
|
||
|
y = y + 25 + etage * 80
|
||
|
cote = 30
|
||
|
for i in range(2):
|
||
|
ds.rectangle(cote, cote, crayon, (x + i * 45,y))
|
||
|
v = (x + i * 45,y)
|
||
|
|
||
|
def dessiner_fenetre_immeuble(immeuble:dict) -> None:
|
||
|
crayon = {}
|
||
|
crayon['écriture'] = 'white'
|
||
|
crayon['fond'] = 'blue'
|
||
|
crayon['épaisseur'] = 2
|
||
|
x, y = coordonees_fenetre_etage(immeuble)
|
||
|
cote = 30
|
||
|
for i in range(immeuble['etages']):
|
||
|
x = -200
|
||
|
y = y + i * 80
|
||
|
for i in range(3):
|
||
|
ds.rectangle(cote, cote, crayon, (x + i * 45,y))
|
||
|
ds.rectangle(cote, cote, crayon, (x,y))
|
||
|
|
||
|
def dessiner_fenetres(immeuble:dict) -> None:
|
||
|
for etage in range(immeuble['etages']):
|
||
|
for position in range(3):
|
||
|
dessiner_fenetre(immeuble, etage, position)
|
||
|
|
||
|
def dessiner_rue_aleatoire() -> None:
|
||
|
for n in range(4):
|
||
|
informations_immeuble = immeuble_aleatoire(n)
|
||
|
dessiner_immeuble(informations_immeuble)
|
||
|
|
||
|
|
||
|
def dessiner_immeuble(immeuble:dict) -> None:
|
||
|
dessiner_facade(immeuble)
|
||
|
dessiner_fenetres(immeuble)
|
||
|
dessiner_porte(immeuble)
|
||
|
dessiner_fenetre(immeuble)
|
||
|
dessiner_fenetre_etage(immeuble)
|
||
|
dessiner_fenetre_immeuble(immeuble)
|
||
|
# à compléter avec d'autres fonctions pour le reste : toit, fenêtres...
|
||
|
|
||
|
def dessiner_rue_decrite(rue:list) -> dict:
|
||
|
for i in range(len(rue)): # pour chaque i possible dans le tableau rue
|
||
|
print(rue[i])
|
||
|
|
||
|
for immeuble in rue: # pour chaque contenu de case
|
||
|
print(immeuble)
|
||
|
|
||
|
|
||
|
|
||
|
testt = [
|
||
|
{'couleur_facade':'red', 'numero':3, 'etages':4,'toit':2},
|
||
|
{'couleur_facade':'purple', 'numero':2, 'etages':3,'toit':1},
|
||
|
{'couleur_facade':'pink', 'numero':4, 'etages':5,'toit':2}
|
||
|
]
|
||
|
dessiner_rue_decrite(testt)
|
||
|
|
||
|
|