|
|
|
@ -21,6 +21,14 @@ LARGEUR_IMMEUBLE = 140
|
|
|
|
|
# Fonction privées |
|
|
|
|
|
|
|
|
|
def immeuble_aleatoire(numero: int) -> dict: |
|
|
|
|
"""Génère un immeuble avec des caractéristiques aléatoires. |
|
|
|
|
|
|
|
|
|
:: param numero(int) :: numéro de l'immeuble pour positionner sa façade |
|
|
|
|
:: return (dict) :: dictionnaire contenant les attributs de l'immeuble, |
|
|
|
|
comme couleur de façade, numéro, nombre d'étages, |
|
|
|
|
position de la porte, type et couleur du toit |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
informations = {} |
|
|
|
|
informations['couleur_facade'] = couleur_aleatoire() |
|
|
|
|
informations['numero'] = numero |
|
|
|
@ -31,31 +39,70 @@ def immeuble_aleatoire(numero: int) -> dict:
|
|
|
|
|
return informations |
|
|
|
|
|
|
|
|
|
def couleur_aleatoire() -> str: |
|
|
|
|
"""Sélectionne une couleur aléatoire pour la façade. |
|
|
|
|
|
|
|
|
|
:: return (str) :: couleur aléatoire choisie pour la façade |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
return choice(['red','light green','grey','sky blue','olive','seagreen','mediumaquamarine','peachpuff']) |
|
|
|
|
|
|
|
|
|
def toit_aleatoire() -> str: |
|
|
|
|
"""Sélectionne un type de toit aléatoire pour l'immeuble. |
|
|
|
|
|
|
|
|
|
:: return (str) :: type de toit, 'pointu' ou 'arrondi' |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
return choice(['pointu','arrondi']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def etage_aleatoire() -> str: |
|
|
|
|
"""Choisit un nombre d'étages aléatoire pour l'immeuble. |
|
|
|
|
|
|
|
|
|
:: return (int) :: hauteur de l'immeuble en pixels, en multiple de 80 |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
return choice([80,160,240,320]) |
|
|
|
|
|
|
|
|
|
def coordonnees_facade(immeuble:dict) -> tuple: |
|
|
|
|
"""Calcule les coordonnées de la base de la façade de l'immeuble. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (tuple) :: coordonnées de la façade de l'immeuble (x, y) |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
x_gauche = -400+ 200 * immeuble['numero'] |
|
|
|
|
y_bas = -200 |
|
|
|
|
return (x_gauche, y_bas) |
|
|
|
|
|
|
|
|
|
def coordonnees_porte(immeuble:dict) -> tuple: |
|
|
|
|
"""Calcule les coordonnées de la porte de l'immeuble. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (tuple) :: coordonnées de la porte (x, y) en fonction de la position choisie |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
x_gauche = -400+ 200 * immeuble['numero'] + choice([12.5,55,97.5]) |
|
|
|
|
y_bas = -200 |
|
|
|
|
return (x_gauche, y_bas) |
|
|
|
|
|
|
|
|
|
def coordonnees_fenetres(immeuble:dict) -> tuple: |
|
|
|
|
"""Calcule les coordonnées de la base des fenêtres de l'immeuble. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (tuple) :: coordonnées de la base des fenêtres (x, y) |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
x_gauche = -400+ 200 * immeuble['numero'] |
|
|
|
|
y_bas = -200 |
|
|
|
|
return (x_gauche, y_bas) |
|
|
|
|
|
|
|
|
|
def dessiner_facade(immeuble: dict) -> None: |
|
|
|
|
"""Dessine la façade de l'immeuble avec la couleur et les dimensions fournies. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
# Traduction des données de rue vers dessiner |
|
|
|
|
crayon = {} |
|
|
|
|
crayon['écriture'] = "black" |
|
|
|
@ -68,6 +115,12 @@ def dessiner_facade(immeuble: dict) -> None:
|
|
|
|
|
rectangle(cote, etages, crayon, (x, y)) |
|
|
|
|
|
|
|
|
|
def dessiner_porte(immeuble:dict) -> None: |
|
|
|
|
"""Dessine la porte de l'immeuble avec une couleur aléatoire. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
# Traduction des données de rue vers dessiner |
|
|
|
|
crayon = {} |
|
|
|
|
crayon['écriture'] = "black" |
|
|
|
@ -78,6 +131,12 @@ def dessiner_porte(immeuble:dict) -> None:
|
|
|
|
|
rectangle(30,50, crayon, (x,y)) |
|
|
|
|
|
|
|
|
|
def dessiner_toit(immeuble: dict) -> None: |
|
|
|
|
"""Dessine le toit de l'immeuble selon son type ('pointu' ou 'arrondi'). |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
crayon = { |
|
|
|
|
'écriture': "black", |
|
|
|
|
'fond': immeuble['toit_couleur'], |
|
|
|
@ -96,6 +155,12 @@ def dessiner_toit(immeuble: dict) -> None:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def dessiner_fenetres(immeuble: dict) -> None: |
|
|
|
|
"""Dessine les fenêtres de l'immeuble sur chaque étage. |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
# Traduction des données de rue vers dessiner |
|
|
|
|
crayon = {} |
|
|
|
|
crayon['écriture'] = "black" |
|
|
|
@ -117,6 +182,12 @@ def dessiner_fenetres(immeuble: dict) -> None:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def dessiner_immeuble(immeuble: dict) -> None: |
|
|
|
|
"""Dessine l'ensemble de l'immeuble (façade, fenêtres, porte, toit). |
|
|
|
|
|
|
|
|
|
:: param immeuble(dict) :: dictionnaire avec les informations de l'immeuble |
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
dessiner_facade(immeuble) |
|
|
|
|
dessiner_fenetres(immeuble) |
|
|
|
|
dessiner_porte(immeuble) |
|
|
|
@ -127,12 +198,14 @@ def dessiner_immeuble(immeuble: dict) -> None:
|
|
|
|
|
# Fonction publiques |
|
|
|
|
|
|
|
|
|
def dessiner_rue_aleatoire() -> None: |
|
|
|
|
"""Dessine une rue de quatre immeubles, chacun généré avec des caractéristiques aléatoires. |
|
|
|
|
|
|
|
|
|
:: return (None) :: fonction sans retour |
|
|
|
|
""" |
|
|
|
|
for n in range(4): |
|
|
|
|
informations_immeuble = immeuble_aleatoire(n) |
|
|
|
|
dessiner_immeuble(informations_immeuble) |
|
|
|
|
|
|
|
|
|
def dessiner_rue_decrite(rue:'?') -> None: |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Programme principal |
|
|
|
@ -144,3 +217,4 @@ if __name__ == '__main__':
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|