Aide Débutant Turtle - Python

Résolu/Fermé
Dwenyl Messages postés 3 Date d'inscription samedi 21 septembre 2019 Statut Membre Dernière intervention 4 septembre 2021 - Modifié le 10 oct. 2020 à 15:37
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 - 11 oct. 2020 à 17:10
Bonjour,

En cour de NSI, nous avons pour instruction de créer un logo portant sur cette matière en utilisant Turtle. J'ai alors décidé de créer un logo comprenant la planète (où je mettrais un @ dessus en suivant la forme du cercle), et avec les lettres N, S et I tout en haut. Il n'est pas encore finit et manque encore pleins de détails.

Problème : Le fonctionnement des lettres et de la planète fonctionne intégralement. Mais dès que je trace des lignes dans mon cercle, tout part en cacahuètes ! Les lettres s'en vont à l'autre bout de la fenêtre qu'on ne les voit même plus, le changement de couleur et de taille de pinceau ne sont plus pris en compte et au final plus rien ne va. Je n'ai aucun message d'erreur.



Et voilà le problème :




(Oui je sais c'est horrible mais je n'arrive pas à être correcte dans mes traits. Si vous avez des recommandations je suis preneuse. Du aux nombreux détails la reproduction n'est pas fidèle à la Terre mais je veux au moins que ça en ai l'air, même si les continents ne sont pas précis)


Voici le code. Du mon peu d'expérience, il y a énormément de lignes juste pour un petit déplacement car je n'arrive pas encore à bien prendre en main les fonctions. Donc tant que ça marche, je suis contente. Les lignes qui sont entre guillemets """, c'est là où je commence les courbes sur le cercle, et en l’occurrence là ou il y a problème. Quelqu'un aurait-il une solution ?

Merci d'avance.

from turtle import*
setup(width=780,height=750)


hideturtle() #cacher le curseur

bgcolor("black") #mettre le fond de couleur noir

speed(20) #vitesse du tracé

width(5) #changement de l'épaisseur du trait

pencolor("SteelBlue4")

begin_fill()
penup() #création de la planète
setposition(0,-350)
pendown()
circle(180)
color("DeepSkyBlue2")
end_fill()


"""penup() #création du coté gauche (courbes)
setposition(-75,-10)
pencolor("green")
width(3)
pendown()
begin_fill()
for x in range(13):
right(1)
forward(5)
for x in range(22):
right(8)
forward(3)
left(5)
forward(30)
for x in range(6):
left(20)
forward(15)
forward(15)
for x in range(5):
right(8)
forward(10)
for x in range(5):
left(20)
forward(10)
forward(10)
for x in range(13):
right(15)
forward(10)
forward(20)
for x in range(3):
right(10)
forward(10)
forward(5)
for x in range(5):
left(5)
forward(8)
forward(25)
for x in range(3):
left(10)
forward(4)
right(90)
forward(5)
for x in range(5): #tracage sur la ligne bleu
left(5)
forward(5)
for x in range(4):
right(10)
forward(10)
forward(50)
for x in range(3):
right(10)
forward(10)
forward(50)
for x in range(3):
left(5)
forward(5)
for x in range(3):
right(10)
forward(10)
for x in range(3):
right(5)
forward(5)
color("green")
end_fill()"""



penup() # LETTRE N
setposition(-380,150)
width(4)
pendown()
left(90)
forward(200)

x=0

for x in range(4):
right(40)
forward(10)
forward(300)

x=0

for x in range(4):
left(40)
forward(10)
forward(280)

penup() # LETTRE S
setposition(100,350)
pendown()
left(90)
forward(200)
for x in range(22):
left(8)
forward(10)
left(4)
forward(150)
for x in range(22):
right(8)
forward(10)
right(4)
forward(200)

penup() # LETTRE I
setposition(300,350)
pendown()
left(90)
forward(300)



pencolor("red") # Création des objets commplémentaires
width(3)


penup() # Téléphone (Lettre N)
setposition(-223,57) # partie basse
pendown()
right(90)
forward(157)
right(90)
forward(100)

penup()
setposition(-223,57)
pendown()
forward(20)

penup() # partie haute
setposition(-380,360)
pendown()
right(90)
forward(157)

penup()
setposition(-380,360)
pendown()
right(90)
forward(10)

width(2) # bouton d'acceuil

penup()
setposition(-310,80)
pendown()
circle(10)

width(3) # Souris (Lettre S)

penup()
setposition(100,360)
pendown()
forward(20)
for x in range(2):
left(40)
forward(5)
left(10)
forward(30)
for x in range(2):
left(40)
forward(5)

width(2)

left(10) # boucle de la souris
forward(7)
left(90)
forward(20)
right(90)
forward(5)
right(90)
forward(20)
right(90)
forward(5)
right(180)

width(3)
forward(13) # sortie de la boucle

for x in range(2):
left(40)
forward(5)
left(10)
forward(31)
for x in range(2):
left(40)
forward(5)

width(3) # Télévision (Lettre S)

penup()
setposition(-80,65)
pendown()
left(100)
forward(80)

penup() # pied de la télévision
setposition(-40,65)
width(4)
pendown()
left(90)
forward(20)

right(90) # écran de la télévision
forward(40)
left(90)
forward(30)
left(90)
forward(80)
left(90)
forward(30)
left(90)
forward(40)

exitonclick()






Configuration: Windows / Firefox 81.0

2 réponses

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
11 oct. 2020 à 17:10
Bonjour,
Sur la deuxième capture d'écran, on reconnait les lignes qui composent les lettres, mais celles-ci sont penchées sur la gauche. Cela indique que la tortue est tout simplement mal orientée.
C'est normal, après l'avoir fait se déplacer le long de la forme verte, elle n'a aucune raison de se retrouver dans la même orientation qu'avant. (Elle a un angle de 21° au lieu de 0°)
Pour résoudre le problème, il suffit de la remettre dans la bon sens après avoir tracé le continent en faisant
seth(0)
.
1
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
10 oct. 2020 à 16:40
Bonjour Dwenyl,


L'indentation étant importante en Python, merci de re poster ton code avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci :

def test():
    print('test')

test()
0