Créons nos propres fonctions

Réutiliser des bouts de programme ?

Supposons que l'on souhaite dessiner un carré (en supposant que l'on n'utilise pas rect) à l'aide de line, nous pourrions faire ainsi:

Evidemment, si l'on souhaitait dessiner un autre carré, nous pourrions copier les 4 lignes line mais cela ne serait pas très pratique et ne donnerait pas un programme très lisible. Heureusement, il est possible de créer ses propres instructions ! Ainsi, rien ne nous empêche de définir une nouvelle instruction carre qui dessine un carré comme celui de l'exemple ci-dessus.

Le soucis avec cette approche est que l'on ne peut pas dessiner un carré ailleurs qu'à la position (10,10) et avec un côté de 100 pixels. Notre instruction carre serait bien plus utile si l'on pouvait indiquer où dessiner le carré, ainsi que sa taille. Pour cela, il faut modifier légèrement notre fonction carre afin de la paramétrer, c'est-à-dire de la rendre plus général en indiquant qu'il faut donner un minimum d'information pour pouvoir dessiner un carré n'importe où sur le tableau et de n'importe quelle taille.

Maintenant, nous avons créé une nouvelle instruction grâce à la définition de la fonction carre. Du coup, il devient possible de dessiner facilement des tableaux contenant des carrés :) Si l'on ajoute en plus des paramètres pour préciser les couleurs du contour et de l'intérieur du carré, on disposera alors d'une fonction très pratique et facilement réutilisable.

Résumons un peu ce que nous avons découvert autour de cette notion de fonction:

  • une fonction est une suite d'instructions que l'on peut utiliser (appeler) plusieurs fois dans un programme,
  • une fonction est caractérisée par son nom et éventuellement les informations dont elle a besoin pour effectuer son traitement, on appelle ces informations des paramètres,
  • comme pour les répétitions, il faut être attentif à l'indentation (aux espaces en début de ligne) !
# définition d'une fonction appelée 'fonction1' ayant 2 paramètres
def fonction1(parametre1, parametre2):
  instruction1
  instruction2 
  
# définition d'une fonction appelée 'fonction2' n'ayant pas de paramètres
def fonction2():
  instruction1
  instruction2
  instruction3
  

Nous voyons dans l'exemple ci-dessus que parfois une fonction a besoin de paramètres (comme rect, ellipse …) et d'autre fois non (comme noStroke()). De même, parfois une fonction ne calcule pas un résultat particulier, comme carre qui ne fait que dessiner des lignes sur le tableau, alors que d'autres fois, une fonction retourne un résultat. Par exemple, si l'on souhaite créer une instruction couleur_au_hasard, elle devrait tirer aléatoirement les 3 composantes de couleurs et retourner une nouvelle couleur construite à partir de ces 3 nombres tirés au hasard.

Dés colorés

Description Objectif
Un coup de dés jamais n'abolira le hasard comme l'écrivait Mallarmé … occasion de revenir de nouveau sur notre première oeuvre en la réinterprétant pour exploiter la notion de fonction :)

Dans un second temps, on peut ajouter un élément au tableau: lorsque l'utilisateur clique sur un bouton de la souris, on efface l'ensemble du tableau !