Projet Rue Python Malone et Alexis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.8 KiB

from rue import *
def dessiner_rue_decrite(description: str) -> None:
lignes = description.strip().split('\n')
nombre_immeubles = int(lignes[1].split()[0]) # Récupère le nombre d'immeubles
for i in range(2, 2 + nombre_immeubles):
immeuble_description = lignes[i].strip()
immeuble = parser_immeuble(immeuble_description, i - 2)
dessiner_immeuble(immeuble)
def parser_immeuble(description: str, numero: int) -> dict:
attributs = description.split(' - ')
# Récupération de la couleur et du nombre d'étages
facade = attributs[0].split(' ')[1] # couleur de façade
etages = int(attributs[1].split(' ')[0]) * 80 # Conversion en pixels
porte_position = attributs[2].split(' ')[-1] # Position de la porte
toit_type = attributs[3].split(' ')[-1] # Type de toit
toit_couleur = 'black' # On suppose que le toit est toujours noir
porte_coord = coordonnees_porte_avec_position(numero, porte_position)
print(attributs)
return {
'couleur_facade': facade,
'numero': numero,
'etages': etages,
'porte': porte_coord,
'toit_type': toit_type,
'toit_couleur': toit_couleur
}
def coordonnees_porte_avec_position(numero: int, position: str) -> tuple:
x_gauche = -400 + 200 * numero
y_bas = -200
if position == 'au milieu':
return (x_gauche + 55, y_bas)
elif position == 'à gauche':
return (x_gauche + 12.5, y_bas)
elif position == 'à droite':
return (x_gauche + 97.5, y_bas)
if __name__ == '__main__':
# Lire la description depuis le fichier
with open('description_rue.txt', 'r') as fichier:
description = fichier.read()
# Dessiner la rue décrite dans le fichier
dessiner_rue_decrite(description)