Jajak
1 year ago
1 changed files with 138 additions and 0 deletions
@ -0,0 +1,138 @@
|
||||
"""Ce fichier permet de dessiner une rue à l'aide des fonctions suivantes : |
||||
|
||||
+ dessiner_rue_aleatoire() |
||||
+ dessiner_rue_decrite(rue:dict) |
||||
""" |
||||
|
||||
|
||||
# Importation |
||||
|
||||
import squelette_dessiner as ds |
||||
import turtle as trt |
||||
import random as rd |
||||
|
||||
|
||||
# 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,6) |
||||
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 |
||||
crayon = {} |
||||
crayon['écriture'] = "grey" |
||||
crayon['fond'] = immeuble['couleur_facade'] |
||||
crayon['épaisseur'] = 3 |
||||
x, y = coordonnees_facade(immeuble) # désempaquatage du couple |
||||
cote = LARGEUR_IMMEUBLE |
||||
# Demande d'affichage |
||||
for i in range(immeuble['etages']): |
||||
ds.rectangle(80, cote, crayon, (x,y + i * 80)) |
||||
|
||||
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_porte(immeuble:dict) -> None: |
||||
# Traduction des données de rue vers dessiner |
||||
crayon = {} |
||||
pass |
||||
def dessiner_fenetre(immeuble:dict) -> None: |
||||
crayon = {} |
||||
crayon['écriture'] = 'white' |
||||
crayon['fond'] = 'blue' |
||||
crayon['épaisseur'] = 2 |
||||
x, y = coordonees_fenetre(immeuble) |
||||
cote = 30 |
||||
ds.rectangle(cote, cote, crayon, (x,y)) |
||||
|
||||
def dessiner_fenetre_etage(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(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)) |
||||
|
||||
|
||||
def dessiner_immeuble(immeuble:dict) -> None: |
||||
dessiner_facade(immeuble) |
||||
dessiner_porte(immeuble) |
||||
dessiner_toit(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 |
||||
|
||||
if __name__ == '__main__': |
||||
dessiner_rue_aleatoire() |
Loading…
Reference in new issue