|
|
|
@ -1,15 +1,7 @@
|
|
|
|
|
"""Ce fichier permet de dessiner une rue à l'aide des fonctions suivantes : |
|
|
|
|
|
|
|
|
|
+ dessiner_rue_aleatoire() |
|
|
|
|
+ dessiner_rue_decrite(rue:dict) |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Importation |
|
|
|
|
|
|
|
|
|
import dessiner as ds |
|
|
|
|
import squelette_dessiner as ds |
|
|
|
|
import turtle as trt |
|
|
|
|
import random as rd |
|
|
|
|
|
|
|
|
|
trt.bgcolor("lightskyblue") |
|
|
|
|
|
|
|
|
|
# Constantes |
|
|
|
@ -25,77 +17,133 @@ def immeuble_aleatoire(numero:int) -> dict:
|
|
|
|
|
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: |
|
|
|
|
liste = ["red","blue","yellow","black","orange","purple","brown","pink","green", "olive", "silver", "teal", "darkcyan", "aqua"] |
|
|
|
|
couleur = rd.randint(0,len(liste)-1) |
|
|
|
|
return liste[couleur] |
|
|
|
|
|
|
|
|
|
def coordonnees_facade(immeuble:dict) -> tuple: |
|
|
|
|
x_gauche = -200 + 200 * immeuble['numero'] |
|
|
|
|
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 |
|
|
|
|
# Demande d'affichage |
|
|
|
|
for i in range(immeuble['etages']): |
|
|
|
|
ds.rectangle(80, cote, crayon, (x,y + i * 80)) |
|
|
|
|
|
|
|
|
|
def dessiner_porte(immeuble:dict) -> None: |
|
|
|
|
# Traduction des données de rue vers dessiner |
|
|
|
|
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_aleatoire() -> None: |
|
|
|
|
for n in range(4): |
|
|
|
|
informations_immeuble = immeuble_aleatoire(n) |
|
|
|
|
dessiner_immeuble(informations_immeuble) |
|
|
|
|
|
|
|
|
|
def dessiner_rue_decrite(rue:'?') -> None: |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Programme principal |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
|
dessiner_rue_aleatoire() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""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) |
|
|
|
|
""" |
|
|
|
|
|