Dorian.D
1 year ago
5 changed files with 477 additions and 0 deletions
@ -0,0 +1,213 @@
|
||||
"""Ce fichier permet de dessiner des formes à l'aide des fonctions suivantes |
||||
|
||||
+ triangle_equilateral(cote, info_feutre, coordonnees) |
||||
+ arc_de_cercle(rayon, angle, info_feutre, coordonnees) |
||||
|
||||
|
||||
Exemples d'utilisation : |
||||
>>> informations_feutre = {'écriture':'blue', 'fond':'#FF88FF', 'épaisseur':5} |
||||
>>> triangle_equilateral(50, informations_feutre, (50,100)) |
||||
>>> arc_de_cercle(75, 360, informations_feutre, (200,-200)) |
||||
""" |
||||
|
||||
|
||||
# Importation |
||||
|
||||
import turtle as trt |
||||
import random as rd |
||||
|
||||
|
||||
# Déclaration des fonctions privées |
||||
|
||||
def nouveau_stylo(ecriture, fond, largeur): |
||||
"""Renvoie la référence d'un stylo configuré |
||||
|
||||
:: param ecriture(str) :: la couleur d'écriture ('red', '#FF0000') |
||||
:: param fond(str) :: la couleur de fond pour ce stylo |
||||
:: param largeur(int) :: la largeur du trait |
||||
:: return (Turtle) :: renvoie un objet de la classe Turtle |
||||
|
||||
""" |
||||
feutre = trt.Turtle() |
||||
feutre.color(ecriture) |
||||
feutre.fillcolor(fond) |
||||
feutre.pensize(largeur) |
||||
feutre.speed(0) |
||||
return feutre |
||||
|
||||
def deplacer(feutre, x, y): |
||||
"""Lève le feutre, déplace le feutre et abaisse le feutre |
||||
|
||||
:: param feutre(Turtle) :: la référence de l'objet Turtle |
||||
:: param x(int) :: coordonnée horizontale (abscisse) |
||||
:: param y(int) :: coordonnée verticale (ordonnée) |
||||
:: return (None) :: c'est une fonction sans retour |
||||
.. effet de bord :: modifie l'état de feutre |
||||
|
||||
""" |
||||
feutre.penup() # On lève la pointe |
||||
feutre.goto(x, y) # On déplace le crayon |
||||
feutre.pendown() # On abaisse la pointe |
||||
|
||||
def trace_triangle_equilateral(feutre, cote): |
||||
"""Trace un triangle (equilatéral) à l'aide du crayon feutre |
||||
|
||||
:: param feutre(Turtle) :: la référence de l'objet Turtle |
||||
:: param cote(int) :: la valeur en pixel des côtés |
||||
:: return (None) :: fonction sans retour |
||||
.. effet de bord :: modifie l'état de feutre |
||||
|
||||
""" |
||||
feutre.begin_fill() |
||||
for x in range(3): |
||||
feutre.forward(cote) |
||||
feutre.left(120) |
||||
feutre.end_fill() |
||||
feutre.hideturtle() |
||||
|
||||
def trace_arc(feutre, rayon, angle): |
||||
"""Trace un arc de cercle à l'aide du crayon feutre |
||||
|
||||
:: param feutre(Turtle) :: la référence de l'objet Turtle |
||||
:: param rayon(int) :: la valeur en pixel du rayon |
||||
:: param angle(int) :: l'angle à tracer (360 pour un cercle) |
||||
:: return (None) :: fonction sans retour |
||||
.. effet de bord :: modifie l'état de feutre |
||||
|
||||
""" |
||||
feutre.begin_fill() |
||||
feutre.circle(rayon, angle) |
||||
feutre.end_fill() |
||||
feutre.hideturtle() |
||||
|
||||
def trace_rectangle(feutre, largeur, longueur): |
||||
"""Trace un rectangle à l'aide du crayon feutre |
||||
|
||||
:: param feutre(Turtle) :: la référence de l'objet Turtle |
||||
:: param longueur(int) :: la valeur en pixel des cotés sur la longueur |
||||
:: param largeur(int) :: la valeur en pixel des cotés sur la largeur |
||||
:: return (None) :: fonction sans retour |
||||
""" |
||||
feutre.begin_fill() |
||||
feutre.right(180) |
||||
feutre.forward(longueur) |
||||
feutre.right(90) |
||||
feutre.forward(largeur) |
||||
feutre.right(90) |
||||
feutre.forward(longueur) |
||||
feutre.right(90) |
||||
feutre.forward(largeur) |
||||
feutre.end_fill() |
||||
feutre.hideturtle() |
||||
|
||||
def trace_triangle_isocele(feutre, cote, x, y): |
||||
"""Trace un triangle (equilatéral) à l'aide du crayon feutre |
||||
|
||||
:: param feutre(Turtle) :: la référence de l'objet Turtle |
||||
:: param cote(int) :: la valeur en pixel des côtés |
||||
:: return (None) :: fonction sans retour |
||||
.. effet de bord :: modifie l'état de feutre |
||||
|
||||
""" |
||||
feutre.begin_fill() |
||||
|
||||
feutre.goto(x + cote, y ) |
||||
feutre.goto(x +(cote // 2), y + (cote // 3)) |
||||
feutre.goto(x, y) |
||||
|
||||
feutre.end_fill() |
||||
feutre.hideturtle() |
||||
|
||||
|
||||
# Déclarations des fonctions publiques |
||||
|
||||
def triangle_equilateral(cote, info_feutre, coordonnees): |
||||
"""Trace un triangle (equilatéral) à partir des info_feutre et aux bonnees coordonnées |
||||
|
||||
:: param cote(int) :: la valeur en pixel des côtés |
||||
:: param info_feutre(dict) :: un dictionnaire {"écriture":str, "fond":str, "épaisseur":int} |
||||
:: param coordonnees(tuple (int,int) ) :: un tuple (x,y) |
||||
|
||||
""" |
||||
ecriture = info_feutre['écriture'] |
||||
fond = info_feutre['fond'] |
||||
epaisseur = info_feutre['épaisseur'] |
||||
x = coordonnees[0] # ou x,y = coordonnees (par désempaquetage) |
||||
y = coordonnees[1] |
||||
|
||||
feutre = nouveau_stylo(ecriture, fond, epaisseur) |
||||
deplacer(feutre, x, y) |
||||
trace_triangle_equilateral(feutre, cote) |
||||
|
||||
return feutre |
||||
|
||||
def arc_de_cercle(rayon, angle, info_feutre, coordonnees): |
||||
"""Trace un arc de cercle à partir des info_feutre et aux bonnees coordonnées |
||||
|
||||
:: param rayon(int) :: la valeur en pixel du rayon |
||||
:: param angle(int) :: la valeur en ° de l'angle |
||||
:: param info_feutre(dict) :: un dictionnaire {"écriture":str, "fond":str, "épaisseur":int} |
||||
:: param coordonnees(tuple (int,int) ) :: un tuple (x,y) |
||||
|
||||
""" |
||||
ecriture = info_feutre['écriture'] |
||||
fond = info_feutre['fond'] |
||||
epaisseur = info_feutre['épaisseur'] |
||||
x = coordonnees[0] # ou x,y = coordonnees (par désempaquetage) |
||||
y = coordonnees[1] |
||||
|
||||
feutre = nouveau_stylo(ecriture, fond, epaisseur) |
||||
deplacer(feutre, x, y) |
||||
trace_arc(feutre, rayon, angle) |
||||
|
||||
return feutre |
||||
|
||||
def rectangle(largeur, longueur, info_feutre, coordonnees): |
||||
"""Trace un rectangle à partir des info_feutre et aux bonnees coordonnées |
||||
|
||||
:: param largeur(int) :: la valeur en pixel des cotés de a largeur |
||||
:: param longueur(int) :: la valeur en pixel des cotés de la longueur |
||||
:: param info_feutre(dict) :: un dictionnaire {"écriture":str, "fond":str, "épaisseur":int} |
||||
:: param coordonnees(tuple (int,int) ) :: un tuple (x,y) |
||||
|
||||
""" |
||||
ecriture = info_feutre['écriture'] |
||||
fond = info_feutre['fond'] |
||||
epaisseur = info_feutre['épaisseur'] |
||||
x = coordonnees[0] # ou x,y = coordonnees (par désempaquetage) |
||||
y = coordonnees[1] |
||||
|
||||
feutre = nouveau_stylo(ecriture, fond, epaisseur) |
||||
deplacer(feutre, x, y) |
||||
trace_rectangle(feutre, largeur, longueur) |
||||
|
||||
return feutre |
||||
|
||||
def triangle_isocele(cote, info_feutre, coordonnees): |
||||
"""Trace un triangle (equilatéral) à partir des info_feutre et aux bonnees coordonnées |
||||
|
||||
:: param cote(int) :: la valeur en pixel des côtés |
||||
:: param info_feutre(dict) :: un dictionnaire {"écriture":str, "fond":str, "épaisseur":int} |
||||
:: param coordonnees(tuple (int,int) ) :: un tuple (x,y) |
||||
|
||||
""" |
||||
ecriture = info_feutre['écriture'] |
||||
fond = info_feutre['fond'] |
||||
epaisseur = info_feutre['épaisseur'] |
||||
x = coordonnees[0] # ou x,y = coordonnees (par désempaquetage) |
||||
y = coordonnees[1] |
||||
|
||||
feutre = nouveau_stylo(ecriture, fond, epaisseur) |
||||
deplacer(feutre, x, y) |
||||
trace_triangle_isocele(feutre, cote, x, y) |
||||
|
||||
return feutre |
||||
|
||||
# Instructions du programme principal |
||||
|
||||
if __name__ == '__main__': |
||||
|
||||
informations_feutre = {'écriture':"blue", 'fond':'#FF88FF', 'épaisseur':5} |
||||
triangle_equilateral(50, informations_feutre, (50,100)) |
||||
arc_de_cercle(75, 360, informations_feutre, (200,-200)) |
||||
rectangle(140, 80, informations_feutre, (300, -200)) |
@ -0,0 +1,35 @@
|
||||
from rue import dessiner_rue_decrite |
||||
|
||||
def separateur(fichier:str) -> list[list]: |
||||
t = [] |
||||
obj_fichier = open(fichier, 'r', encoding="utf-8") |
||||
|
||||
ligne = 'test' |
||||
while ligne != "": |
||||
ligne = obj_fichier.readline() |
||||
ligne = ligne.replace('\n','') |
||||
parametre = ligne.split(';') |
||||
t.append(parametre) |
||||
return t |
||||
|
||||
def recuperer_immeuble(t:list) -> dict: |
||||
informations = {} |
||||
informations['numero'] = int(t[0]) |
||||
informations['couleur_facade'] = t[1] |
||||
informations['etages'] = int(t[2]) |
||||
informations['toit'] = t[3] |
||||
informations['porte'] = t[4] |
||||
return informations |
||||
|
||||
def recuperer_immeubles(tab:list[list]) -> list[dict]: |
||||
rep = [] |
||||
for i in range(len(tab) - 1): |
||||
dico = recuperer_immeuble(tab[i]) |
||||
rep.append(dico) |
||||
return rep |
||||
|
||||
rue_tab = separateur('text_interpreteur.txt') |
||||
rue_dict = recuperer_immeubles(rue_tab) |
||||
|
||||
dessiner_rue_decrite(rue_dict) |
||||
|
Binary file not shown.
@ -0,0 +1,226 @@
|
||||
"""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) |
||||
informations['toit'] = rd.randint(1,2) |
||||
informations['porte'] = 3 |
||||
return informations |
||||
|
||||
def couleur_aleatoire() -> str: |
||||
liste = ['snow', 'ghost white', 'white smoke', 'gainsboro', 'floral white', 'old lace', |
||||
'linen', 'antique white', 'papaya whip', 'blanched almond', 'bisque', 'peach puff', |
||||
'navajo white', 'lemon chiffon', 'mint cream', 'azure', 'alice blue', 'lavender', |
||||
'lavender blush', 'misty rose', 'dark slate gray', 'dim gray', 'slate gray', |
||||
'light slate gray', 'gray', 'light gray', 'midnight blue', 'navy', 'cornflower blue', 'dark slate blue', |
||||
'slate blue', 'medium slate blue', 'light slate blue', 'medium blue', 'royal blue', 'blue', |
||||
'dodger blue', 'deep sky blue', 'sky blue', 'light sky blue', 'steel blue', 'light steel blue', |
||||
'light blue', 'powder blue', 'pale turquoise', 'dark turquoise', 'medium turquoise', 'turquoise', |
||||
'cyan', 'light cyan', 'cadet blue', 'medium aquamarine', 'aquamarine', 'dark green', 'dark olive green', |
||||
'dark sea green', 'sea green', 'medium sea green', 'light sea green', 'pale green', 'spring green', |
||||
'lawn green', 'medium spring green', 'green yellow', 'lime green', 'yellow green', |
||||
'forest green', 'olive drab', 'dark khaki', 'khaki', 'pale goldenrod', 'light goldenrod yellow', |
||||
'light yellow', 'yellow', 'gold', 'light goldenrod', 'goldenrod', 'dark goldenrod', 'rosy brown', |
||||
'indian red', 'saddle brown', 'sandy brown', |
||||
'dark salmon', 'salmon', 'light salmon', 'orange', 'dark orange', |
||||
'coral', 'light coral', 'tomato', 'orange red', 'red', 'hot pink', 'deep pink', 'pink', 'light pink', |
||||
'pale violet red', 'maroon', 'medium violet red', 'violet red', |
||||
'medium orchid', 'dark orchid', 'dark violet', 'blue violet', 'purple', 'medium purple', |
||||
'thistle', 'snow2', 'snow3', |
||||
'snow4', 'seashell2', 'seashell3', 'seashell4', 'AntiqueWhite1', 'AntiqueWhite2', |
||||
'AntiqueWhite3', 'AntiqueWhite4', 'bisque2', 'bisque3', 'bisque4', 'PeachPuff2', |
||||
'PeachPuff3', 'PeachPuff4', 'NavajoWhite2', 'NavajoWhite3', 'NavajoWhite4', |
||||
'LemonChiffon2', 'LemonChiffon3', 'LemonChiffon4', 'cornsilk2', 'cornsilk3', |
||||
'cornsilk4', 'ivory2', 'ivory3', 'ivory4', 'honeydew2', 'honeydew3', 'honeydew4', |
||||
'LavenderBlush2', 'LavenderBlush3', 'LavenderBlush4', 'MistyRose2', 'MistyRose3', |
||||
'MistyRose4', 'azure2', 'azure3', 'azure4', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3', |
||||
'SlateBlue4', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'blue2', 'blue4', |
||||
'DodgerBlue2', 'DodgerBlue3', 'DodgerBlue4', 'SteelBlue1', 'SteelBlue2', |
||||
'SteelBlue3', 'SteelBlue4', 'DeepSkyBlue2', 'DeepSkyBlue3', 'DeepSkyBlue4', |
||||
'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'SkyBlue4', 'Slategray1', 'Slategray2', 'Slategray3', |
||||
'Slategray4', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3', |
||||
'LightSteelBlue4', 'LightBlue1', 'LightBlue2', 'LightBlue3', 'LightBlue4', |
||||
'LightCyan2', 'LightCyan3', 'LightCyan4', 'PaleTurquoise1', 'PaleTurquoise2', |
||||
'PaleTurquoise3', 'PaleTurquoise4', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3', |
||||
'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cyan2', 'cyan3', |
||||
'cyan4', 'DarkSlategray1', 'DarkSlategray2', 'DarkSlategray3', 'DarkSlategray4', |
||||
'aquamarine2', 'aquamarine4', 'DarkSeaGreen1', 'DarkSeaGreen2', 'DarkSeaGreen3', |
||||
'DarkSeaGreen4', 'SeaGreen1', 'SeaGreen2', 'SeaGreen3', 'PaleGreen1', 'PaleGreen2', |
||||
'PaleGreen3', 'PaleGreen4', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4', |
||||
'green2', 'green3', 'green4', 'chartreuse2', 'chartreuse3', 'chartreuse4', |
||||
'OliveDrab1', 'OliveDrab2', 'OliveDrab4', 'DarkOliveGreen1', 'DarkOliveGreen2', |
||||
'DarkOliveGreen3', 'DarkOliveGreen4', 'khaki1', 'khaki2', 'khaki3', 'khaki4', |
||||
'LightGoldenrod1', 'LightGoldenrod2', 'LightGoldenrod3', 'LightGoldenrod4', |
||||
'LightYellow2', 'LightYellow3', 'LightYellow4', 'yellow2', 'yellow3', 'yellow4', |
||||
'gold2', 'gold3', 'gold4', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4', |
||||
'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4', |
||||
'RosyBrown1', 'RosyBrown2', 'RosyBrown3', 'RosyBrown4', 'IndianRed1', 'IndianRed2', |
||||
'IndianRed3', 'IndianRed4', 'sienna1', 'sienna2', 'sienna3', 'sienna4', 'burlywood1', |
||||
'burlywood2', 'burlywood3', 'burlywood4', 'wheat1', 'wheat2', 'wheat3', 'wheat4', 'tan1', |
||||
'tan2', 'tan4', 'chocolate1', 'chocolate2', 'chocolate3', 'firebrick1', 'firebrick2', |
||||
'firebrick3', 'firebrick4', 'brown1', 'brown2', 'brown3', 'brown4', 'salmon1', 'salmon2', |
||||
'salmon3', 'salmon4', 'LightSalmon2', 'LightSalmon3', 'LightSalmon4', 'orange2', |
||||
'orange3', 'orange4', 'DarkOrange1', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4', |
||||
'coral1', 'coral2', 'coral3', 'coral4', 'tomato2', 'tomato3', 'tomato4', 'OrangeRed2', |
||||
'OrangeRed3', 'OrangeRed4', 'red2', 'red3', 'red4', 'DeepPink2', 'DeepPink3', 'DeepPink4', |
||||
'HotPink1', 'HotPink2', 'HotPink3', 'HotPink4', 'pink1', 'pink2', 'pink3', 'pink4', |
||||
'LightPink1', 'LightPink2', 'LightPink3', 'LightPink4', 'PaleVioletRed1', |
||||
'PaleVioletRed2', 'PaleVioletRed3', 'PaleVioletRed4', 'maroon1', 'maroon2', |
||||
'maroon3', 'maroon4', 'VioletRed1', 'VioletRed2', 'VioletRed3', 'VioletRed4', |
||||
'magenta2', 'magenta3', 'magenta4', 'orchid1', 'orchid2', 'orchid3', 'orchid4', 'plum1', |
||||
'plum2', 'plum3', 'plum4', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3', |
||||
'MediumOrchid4', 'DarkOrchid1', 'DarkOrchid2', 'DarkOrchid3', 'DarkOrchid4', |
||||
'purple1', 'purple2', 'purple3', 'purple4', 'MediumPurple1', 'MediumPurple2', |
||||
'MediumPurple3', 'MediumPurple4', 'thistle1', 'thistle2', 'thistle3', 'thistle4', |
||||
'grey1', 'grey2', 'grey3', 'grey4', 'grey5', 'grey6', 'grey7', 'grey8', 'grey9', 'grey10', |
||||
'grey11', 'grey12', 'grey13', 'grey14', 'grey15', 'grey16', 'grey17', 'grey18', 'grey19', |
||||
'grey20', 'grey21', 'grey22', 'grey23', 'grey24', 'grey25', 'grey26', 'grey27', 'grey28', |
||||
'grey29', 'grey30', 'grey31', 'grey32', 'grey33', 'grey34', 'grey35', 'grey36', 'grey37', |
||||
'grey38', 'grey39', 'grey40', 'grey42', 'grey43', 'grey44', 'grey45', 'grey46', 'grey47', |
||||
'grey48', 'grey49', 'grey50', 'grey51', 'grey52', 'grey53', 'grey54', 'grey55', 'grey56', |
||||
'grey57', 'grey58', 'grey59', 'grey60', 'grey61', 'grey62', 'grey63', 'grey64', 'grey65', |
||||
'grey66', 'grey67', 'grey68', 'grey69', 'grey70', 'grey71', 'grey72', 'grey73', 'grey74', |
||||
'grey75', 'grey76', 'grey77', 'grey78', 'grey79', 'grey80', 'grey81', 'grey82', 'grey83', |
||||
'grey84', 'grey85', 'grey86', 'grey87', 'grey88', 'grey89', 'grey90', 'grey91', 'grey92', |
||||
'grey93', 'grey94', 'grey95', 'grey97', 'grey98', 'grey99'] |
||||
|
||||
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 = None |
||||
if immeuble["porte"] == "gauche": |
||||
position = 0 |
||||
elif immeuble["porte"] == "milieu": |
||||
position = 1 |
||||
elif immeuble["porte"] == "droite": |
||||
position = 2 |
||||
else: |
||||
position = rd.randint(0,2) |
||||
x = x -95 + 42.5*position |
||||
y = y |
||||
ds.rectangle(55, 30, crayon, (x,y)) |
||||
|
||||
def dessiner_porte_fenetre(immeuble:dict) -> 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 |
||||
largeur = 50 |
||||
longeur = 30 |
||||
ds.rectangle(largeur, longeur, crayon, (x,y)) |
||||
|
||||
def fenetre_aleatoire(immeuble): |
||||
toutes = [dessiner_fenetre, dessiner_porte_fenetre] #création d'un tableau avec juste le nom des fonction sans les () pour juste avoir le nom des fonction |
||||
i = rd.randint(0,1) #ici une fonction ramdom qui choisit aléatoirement entre l'une des deux fonctions que l'on va stoker dans i |
||||
toutes[i](immeuble) #on appel la fonction choisit en lui donnant son argument (immeuble) |
||||
|
||||
def dessiner_fenetre(immeuble:dict, etage:int, position:int) -> None: |
||||
crayon = {} |
||||
crayon['écriture'] = 'white' |
||||
crayon['fond'] = 'gold' |
||||
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_toit(immeuble:dict) -> None: |
||||
# Traduction des données de rue vers dessiner |
||||
crayon = {} |
||||
crayon['écriture'] = "grey" |
||||
crayon['fond'] = "black" |
||||
crayon['épaisseur'] = 3 |
||||
x, y = coordonnees_facade(immeuble) # désempaquatage du couple |
||||
y = y + 0 |
||||
x = x -140 |
||||
cote = LARGEUR_IMMEUBLE |
||||
nb = immeuble['etages'] |
||||
if immeuble['toit'] == 1: |
||||
ds.rectangle(10, cote + 40 , crayon, (x + 160,y + nb * 80)) |
||||
elif immeuble['toit'] == 2: |
||||
ds.triangle_isocele(cote, crayon, (x,y + nb * 80)) |
||||
elif immeuble['toit'] == "pointu": |
||||
ds.triangle_isocele(cote, crayon, (x,y + nb * 80)) |
||||
elif immeuble['toit'] == "plat": |
||||
ds.rectangle(10, cote + 40 , crayon, (x + 160,y + nb * 80)) |
||||
|
||||
def dessiner_immeuble(immeuble:dict) -> None: |
||||
dessiner_facade(immeuble) |
||||
dessiner_toit(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:list[dict]) -> dict: |
||||
for immeuble in rue: |
||||
print(immeuble) |
||||
information_immeuble = immeuble |
||||
dessiner_immeuble(information_immeuble) |
||||
|
||||
|
||||
# Programme principal |
||||
|
||||
if __name__ == '__main__': |
||||
dessiner_rue_aleatoire() |
||||
|
Loading…
Reference in new issue