diff --git a/rue/rue.py b/rue/rue.py new file mode 100644 index 0000000..d82fc89 --- /dev/null +++ b/rue/rue.py @@ -0,0 +1,101 @@ +"""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 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) + 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 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_porte(immeuble:dict) -> None: + # Traduction des données de rue vers dessiner + crayon = {} + crayon['écriture'] = 'black' + crayon['fond'] = 'brown' + crayon['épaisseur'] = 2 + 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(immeuble:dict, etage:int, position:int) -> None: + crayon = {} + crayon['écriture'] = 'white' + crayon['fond'] = 'blue' + crayon['épaisseur'] = 2 + x, y = coordonnees_facade(immeuble) + x = x -95 + 42.5*position + y = y + 25 + etage * 80 + cote = 30 + 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_immeuble(immeuble:dict) -> None: + dessiner_facade(immeuble) + dessiner_fenetres(immeuble) + dessiner_porte(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() +