8. Positionner - goto(x, y)

La fonction goto(x, y) permet de positionner la tortue à une position (x, y).

Nous allons voir que :

  • la fonction pos() retourne la position actuelle de la tortue,

  • la fonction goto(x, y) positionne la tortue à la position (x, y),

  • les fonctions xcor() et ycor() retournent la coordonnée x ou y,

  • les fonctions setx(x) et sety(y) affectent la coordonnée x ou y.

Question

La fonction pos() du module turtle




8.1. La position pos()

La fonction pos() retourne la position actuelle de la tortue, sous forme d’un tuple (x, y). Dans le dessin de l’escalier, la fonction write(pos()) affiche les coordonnées de chaque marche, marquée par un point noir.

Exercice 1

Affichez un point (dot) et les coordonnées de chaque point d’inflexion de l’escalier.

8.2. Valeur xcor() et ycor()

Les deux fonctions xcor() et ycor() retournent que la partie x ou y des coordonnées. Dans le dessin de l’escalier, la fonction write(xcor()) affiche la coordonnée x, et la fonction write(ycor()) affiche la coordonnée y de chaque marche.

Exercice 2

Transformez l’escalier en un escalier qui descend.

8.3. Positionner avec goto()

La fonction goto(x, y) positionne la tortue à la position (x, y). Les coordonnées de la position de l’origine de chaque triangle sont affichées.

8.4. Dessiner un polygone

Avec la fonction goto(x, y) nous pouvons facilement dessiner une ligne polygonale.

La fonction goto() accepte deux coordonnées x, y séparés sous la forme goto(x, y) ou alternativement un seul argument sous forme de tuple goto(p).

Mais une façon beaucoup plus compacte et flexible, c’est de représenter un polygone avec un tuple de points. Ensuite nous dessinons cette forme géométrique avec une boucle à l’aide de la fonction goto(p).

Exercice 3

Ajoutez 4 points supplémentaires dans le tuple du polygone pour insérer une porte de taille 50x30.

8.5. Relier les points

Relier les points est un casse-tête en deux dimensions qui comprend une suite de points numérotés à relier.

dots

Le programme suivant numérote les points du polygone.

Exercice 4

Ajoutez encore la porte à la maison, mais dessinez que les points avec un numéro, sans dessiner les lignes, comme dans le jeu relier les points.

8.6. Déplacer un polygone

Avec le polygone représenté par un tuple de ses coordonnées, il est facile de le déplacer et redessiner le polygone ailleurs.

Exercice 5

Déplacez la maison vers une position où elle n’est plus superposée à la première maison.

8.7. Changer l’échelle

Avec le polygone représenté par un tuple de ses coordonnées, il est facile de le déplacer et redessiner le polygone ailleurs avec un changement d’échelle.

Exercice 6

Ajoutez une troisième maison encore plus petite.

8.8. Images miroirs

Dans le jeu de Tetris, nous pouvons définir les formes sous forme d’un tuple qui dessine un petit polygone. Multiplier les coordonnées par une variable a permet de changer de taille. Changer le signe d’une ou des deux coordonnées permet de trouver l’image miroir.

Exercice 7

Ajoutez l’image miroir manquante.

8.9. Direction heading()

La fonction heading() renvoie la direction actuelle de la tortue. La fonction write(heading()) affiche la direction actuelle de la tortue à chaque extrémité.

La direction (heading) des 8 segments d’un octogone.

8.10. Orienter avec seth(a)

La fonction opposée à heading() est setheading(a) ou sa version courte seth(a) qui permet d’orienter la tortue dans une direction particulière.

Ceci est pratique pour dessiner les pièces dans une direction spécifique. Par exemple dans le Tetris, les figures peuvent avoir 4 orientations différentes.

Exercice 8

Ajoutez deux autres L avec une position et orientation appropriée pour créer un remplissage compact.

8.11. Tangram

Le tangram, « sept planches de la ruse », ou jeu des sept pièces, est une sorte de puzzle chinois. C’est une dissection du carré en sept pièces élémentaires. Des dissections plus générales, de formes différentes, sont également appelées tangrams.

tangram

Exercice 9

Utilisez les fonctions goto(x, y) et setheading(a) pour ajouter encore deux triangles et former un carré.

8.12. Ligne polygonale

La fonction polyline(points, p=(0, 0), size=(1, 1), w=1, pen='black', fill='white') dessine une ligne polygonale définie par un tuple de points. Les arguments sont:

  • points – tuple de positions (x, y)

  • p – position de déplacement

  • size – facteur d’échelle

8.13. Exercice

Tangram

Choisissez un animal et recréez la figure.

tangram

Tangram 2

Choisissez un animal et recréez la figure.

tangram

Musée d’art et d’histoire

Le Musée d’art et d’histoire de Genève a mandaté le studio de graphisme zurichois Hubertus Design pour renouveler son identité visuelle. Ce logo à la ligne graphique dynamique, sobre et contemporaine symbolise dorénavant la marque MAH.

Créez 3 autres lettres dans le même style pour un autre musée dans une autre ville. Changez texte et couleur.