Browse Source

Mise à jour de 'interpreteur.py'

master
Treacky 3 weeks ago
parent
commit
f4e69996c6
  1. 28
      interpreteur.py

28
interpreteur.py

@ -1,6 +1,13 @@
from rue import *
from rue import dessiner_immeuble
def dessiner_rue_decrite(description: str) -> None:
"""Dessine une rue en fonction d'une description textuelle.
:: param description(str) :: description textuelle de la rue,
contenant le nombre d'immeubles et leurs caractéristiques
:: return (None) :: fonction sans retour
"""
lignes = description.strip().split('\n')
nombre_immeubles = int(lignes[1].split()[0]) # Récupère le nombre d'immeubles
@ -10,6 +17,16 @@ def dessiner_rue_decrite(description: str) -> None:
dessiner_immeuble(immeuble)
def parser_immeuble(description: str, numero: int) -> dict:
"""Analyse et convertit une description d'immeuble en un dictionnaire d'attributs.
:: param description(str) :: description d'un immeuble sous la forme d'une chaîne de caractères,
séparant les attributs par " - "
:: param numero(int) :: numéro de l'immeuble dans la rue, utilisé pour calculer sa position
:: return (dict) :: dictionnaire contenant les attributs de l'immeuble,
notamment couleur de façade, nombre d'étages, position de la porte,
type de toit, et couleur du toit
"""
attributs = description.split(' - ')
# Récupération de la couleur et du nombre d'étages
@ -32,6 +49,14 @@ def parser_immeuble(description: str, numero: int) -> dict:
def coordonnees_porte_avec_position(numero: int, position: str) -> tuple:
"""Calcule les coordonnées de la porte d'un immeuble en fonction de sa position.
:: param numero(int) :: numéro de l'immeuble dans la rue, utilisé pour calculer sa position en X
:: param position(str) :: position de la porte sur la façade de l'immeuble,
qui peut être "au milieu", "à gauche" ou "à droite"
:: return (tuple) :: tuple contenant les coordonnées X et Y de la porte en pixels
"""
x_gauche = -400 + 200 * numero
y_bas = -200
@ -50,3 +75,4 @@ if __name__ == '__main__':
# Dessiner la rue décrite dans le fichier
dessiner_rue_decrite(description)

Loading…
Cancel
Save