====== Créer nos propres formes et les réutiliser ====== \\ Maintenant que nous avons vu comment utiliser les **formes basiques** disponibles, nous allons pouvoir dessiner nos propres **formes plus complexes** qui seront composées de ces formes basiques. Nous allons aborder ici une nouvelle notion : les **fonctions**, qui vous seront utiles dans la réalisation de votre oeuvre. Une **fonction** est un //bout de code// que l'on peut //réutiliser plusieurs fois// sans avoir à tout réécrire. Par exemple dans le cours précédent nous avons vu beaucoup de fonctions comme ''rect'', ''line'', ''stroke'' ... Ces instructions sont des //bouts de code// écrits par d'autres informaticiens que vous pouvez utiliser simplement en **appelant** la fonction. Dans la suite nous allons donc pouvoir écrire nos **propres fonctions**. \\ ===== Créons nos propres fonctions ===== \\ Supposons que nous voulions dessiner une **cible**, nous pourrions écrire ceci : \\ \\ ellipse(100,100,50,50) # premier cercle de centre (100,100) et de diamètre 50 ellipse(100,100,30,30) # deuxième cercle de centre (100,100) et de diamètre 30 ellipse(100,100,10,10) # troisième cercle de centre (100,100) et de diamètre 10\\ \\ Nous avons donc ici 3 cercles de même centre et de diamètres différents.\\ Si nous voulions dessiner **plusieurs cibles**, il faudrait recopier ces 3 lignes plusieurs fois ce qui n'est pas très pratique et qui rendrait vite le programme illisible. Nous allons donc créer notre **propre fonction** ''cible()'' qui va dessiner notre **forme plus complexe**.\\ \\ | {{:wiki:infofem:lda:cours2021:translate.png?nolink300%}} | Pour dessiner plusieurs cible à différents endroits il existe plusieurs méthodes. Ici nous utilisons ''translate(x,y)''. \\ Cette fonction (fournie par //processing//) effectue une translation du repère de (x,y). C'est comme si vous bougiez votre feuille de **x** vers la gauche et de **y** vers le bas. \\ Vous pourrez donc dessiner des formes à différents endroits sans avoir à changer les paramètres des fonctions de dessin (''rect'',''triangle''...) \\ \\ Pour utiliser ''translate'' il faut d'abord **sauvegarder** la position du repère (la feuille) à l'état initial. Nous vous fournissons pour cela la fonction ''save()''. \\ Ensuite pour **remettre** le repère (la feuille) à sa position initiale, nous vous fournissons la fonction ''reset()'' qui fait ce travail. \\ \\ __Note__: Une autre méthode existe, nous la verrons plus loin dans [[:wiki:infofem:lda:cours2021:lda2021-notion-fonction-parametre|Créer des fonctions avec 
paramètres]]| \\ \\ {{url>https://trinket.io/embed/python/74723878ee 100%, 500px noscroll noborder}} \\ \\ | **__[[:wiki:infofem:lda:cours2021:home|Retour liste des cours]]__** | **__[[:wiki:infofem:lda:cours2021:lda2021-exercice-poisson|Exercice 1 : Un poisson]]__** |