From ea5a149b023c17bcd8ec5acee425933b7a34f6e9 Mon Sep 17 00:00:00 2001 From: KC_ZAY Date: Thu, 12 Sep 2024 15:55:59 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'dessiner.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dessiner.py | 384 +++++++++++++++++++++++++++++----------------------- 1 file changed, 216 insertions(+), 168 deletions(-) diff --git a/dessiner.py b/dessiner.py index 6c34d2a..c79b4e9 100644 --- a/dessiner.py +++ b/dessiner.py @@ -1,168 +1,216 @@ -"""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(5) - 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_rec(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() - - -# 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(long1,long2,info_feutre,coorodonnees): - """Trace un rectangle à partir des info_feutre et aux bonnes coordonnées - - :: param long1(int) - :: param long2(int) - :: param info_feutre(dict) - :: param coordonnees(tuple(int,int)) - - """ - ecriture = info_feutre['écriture'] - fond = info_feutre['fond'] - epaisseur = info_feutre['épaisseur'] - x = coordonnees[0] - y = coordonnees[1] - - feutre = nouveau_stylo(ecriture, fond, epaisseur) - deplacer(feutre,x,y) - - - -# 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)) +"""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(5) + 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_rec(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() + + +# 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(long1,long2,info_feutre,coorodonnees): +# """Trace un rectangle à partir des info_feutre et aux bonnes coordonnées +# +# :: param long1(int) +# :: param long2(int) +# :: param info_feutre(dict) +# :: param coordonnees(tuple(int,int)) +# +# """ +# ecriture = info_feutre['écriture'] +# fond = info_feutre['fond'] +# epaisseur = info_feutre['épaisseur'] +# x = coordonnees[0] +# y = coordonnees[1] +# +# feutre = nouveau_stylo(ecriture, fond, epaisseur) +# deplacer(feutre,x,y) +def rectangle(long1, long2, info_feutre, coordonnees): + """Trace un rectangle à partir des info_feutre et aux bonnes coordonnées + + :: param long1(int) : Longueur du rectangle + :: param long2(int) : Largeur du rectangle + :: param info_feutre(dict) : Informations sur le stylo pour le dessin + :: param coordonnees(tuple(int,int)) : Coordonnées du coin supérieur gauche du rectangle + """ + ecriture = info_feutre['écriture'] + fond = info_feutre['fond'] + epaisseur = info_feutre['épaisseur'] + x = coordonnees[0] + y = coordonnees[1] + + # Créer le stylo avec les caractéristiques spécifiées + feutre = nouveau_stylo(ecriture, fond, epaisseur) + + # Déplacer le stylo aux coordonnées de départ + deplacer(feutre, x, y) + + # Dessiner le rectangle + feutre.begin_fill() + for _ in range(2): + feutre.forward(long1) + feutre.left(90) + feutre.forward(long2) + feutre.left(90) + feutre.end_fill() + +# Configurer la fenêtre Turtle +trt.setup(width=800, height=600) +wn = trt.Screen() +wn.bgcolor("white") +wn.title("Dessin d'un Rectangle") + +# Définir les paramètres du rectangle +longueur = 200 +largeur = 100 +info_feutre = { + 'écriture': 'black', + 'fond': 'yellow', + 'épaisseur': 3 +} + + + +# 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(200, 100, informations_feutre, (-200,-200)) + rectangle(200, 100, informations_feutre, (-200,-100)) + rectangle(200, 100, informations_feutre, (-200,-0)) + rectangle(200, 100, informations_feutre, (-200,100)) +