Conçu par des artistes, pour des artistes, Processing est un des principaux environnements de création utilisant le code informatique pour générer des oeuvres multimédias sur ordinateur. L'attrait de ce logiciel réside dans sa simplicité d'utilisation et dans la diversité de ses applications : image, son, applications sur Internet et sur téléphones mobiles, conception d'objets électroniques interactifs. Le langage utilisé est le Java et il est possible de porter les applications sur Android.
Processing est disponible pour Windows, Linux et MacOS. Il est téléchargeable sur le site officiel : https://processing.org/download/ ou directement sur electro.info.free.fr :
Ouvrir l'exemple "ShapePrimitives" (File => Examples... puis : Basics => Form => ShapePrimitives).
Lancer l'exécution : Sketch => Run
Une référence complète du langage est disponible à cette adresse : http://www.processing.org/reference/
Remarque : Vous disposez également d'une version "hors ligne" de cette référence sur votre disque dur dans le dossier d'installation de Processing :
Modifier le code du programme comme indiqué ci-dessous :
Lancer l'exécution : Sketch => Run
Remarque : Il est possible de réaliser un rendu 3D (voir box et sphere).
A partir de ce que vous avez pu observer et de la référence du langage, expliquer en Français le rôle des fonctions :
Où se situe le point de coordonnées 0,0 de la fenêtre ?
Ajouter les lignes ci-dessous à la fin de votre programme :
Lancer l'exécution : Sketch => Run
Que représente le type "String" ?
Quel opérateur a permit de concaténer les variables s et i ?
Jusqu'à maintenant les programmes exécutés étaient linéaires : une fois leur exécution terminée ils s'arrêtent.
Pour avoir un programme qui s'exécute en permanence, la structure habituelle d'un programme Processing est celle présenté ci-contre :
Remarque : Cette structure rappelle celle d'un programme Arduino.
Créer un nouveau programme et copier le code ci-dessous :
Lancer l'exécution : Sketch => Run
Quel est le type de la fonction "DetectionFinEcran" ?
Combien de paramètre(s) prend la fonction "DetectionFinEcran" ?
Quelle est la portée des variables "ball_x" et "ball_size" ?
Modifier le programme de telle sorte que la balle se déplace en diagonale (à 45°) et rebondisse à 90° sur les bords de l'écran.
Créer une fonction séparée pour la gestion des rebonds.
Compter les rebonds et afficher leur nombre en haut à gauche de l'écran.
Insérer votre programme dans votre rapport (Astuce : vous pouvez copier/coller votre code dans un traitement de texte en conservant les couleurs en sélectionnant le code et en le copiant avec le raccourcis CTRL+Maj+C).
Dans cette partie nous allons ajouter des obstacles qui seront placés aléatoirement sur l'écran. Leur position (x,y) sera mémorisé dans un tableau à deux dimensions qui aura donc 2 colonnes et autant de lignes que d'obstacles.
Ajouter, les différents morceaux de code ci-dessous à votre programme précédent :
Vérifier que le code fonctionne (les obstacles s'affichent mais la balle passe dessous sans rebondir dessus).
Modifier votre code de telle sorte que la balle rebondisse sur les obstacles. Pour simplifier, on ne tiendra pas compte de l'angle d'impact entre la balle et l'obstacle : la balle repartira simplement dans le sens contraire à son déplacement en cas de collision (voir vidéo de démonstration).
Pour la détection des collisions, on utilisera la formule ci-dessous (Théorème de Pythagore) :
Pour les fonctions mathématiques, voir : fonction sq() et fonction sqrt().Insérer votre programme dans votre rapport
La variable mousePressed de type booléen (vrai ou faux) permet de savoir si un bouton de la souris est appuyé (ou appuie sur écran tactile) à un instant t.
La fonction void mousePressed() est appelée à chaque fois qu'un bouton de la souris est appuyé (ou appuie sur écran tactile). Il est possible de savoir quel bouton a été appuyé grâce à la variable mouseButton. Il suffit d'implémenter cette fonction dans votre code comme dans l'exemple ci-dessous :
Les variables mouseX et mouseY nous donnent à tout moment les coordonnées du dernier appuie sur l'écran tactile ce qui est suffisant pour gérer les interactions avec l'utilisateur.
Modifier le programme pour afficher en haut à gauche, en dessous du nombre de rebonds, les coordonnées X,Y du dernier appuie sur l'écran (dernier clic).
Ajouter une barre verticale bleue à la position X du dernier clic (largeur de la barre : 5 pixels). La balle doit rebondir sur cette barre comme si celle-ci était le bord de l'écran (voir vidéo de démonstration).
Insérer votre programme dans votre rapport
Cette partie est destinée à Android, il faut donc utiliser le mode Android.
L'exemple de code ci-dessous montre comment déclarer, initialiser et jouer une musique en boucle (http://developer.android.com/reference/android/media/MediaPlayer.html).
Coder 2 fonctions : StartMusic() et PauseMusic(). Vous pouvez vous aider du diagramme d'état de la documentation Android.
StartMusic() sera appelé au lancement de l'application et PauseMusic() sera appelé quand la balle aura effectué 15 rebonds. La musique reprendra lorsque la balle aura fait 20 rebonds.
Depuis la version 3 de Processing, une bibliothèque "Sound" est disponible, elle ne nécessite pas le mode Android. Pour installer cette bibliothèque, aller dans le menu "Sketch" => "Importer une librairie..." => "Ajouter une librairie..."
Vous pouvez télécharger des sons gratuitement sur les sites ci-dessous :
Cette partie est également destinée à Android, il faut donc utiliser le mode Android et bien entendu, le simulateur ne pouvant pas vibrer, exécuter le programme sur une tablette.
L'exemple de code ci-dessous montre comment déclarer, initialiser et faire tourner le vibreur.
Faire vibrer la tablette à chaque fois que la balle rebondit.
Cette vidéo montre le résultat attendu suite aux différentes modifications demandées :
Voici quelques idées de modifications supplémentaires :
Article connexe : Les structures algorithmiques de base