# SNT Seq 4 Fin de la seq 3 ##### Exercices 1.7 Réaliser un programme qui dessine une maison, (un carré+un triangle) en complétant le programme ci-dessous :::danger :warning: * Le prototype de la fonction maison est la suivant `maison(int x1, int y1, int taille)` * x1 y1 sont les coordonées du coin bas gauche de la maison. * taille correspond à la taille de la maison(la base et la hauteur). * la fonction maison doit uniquement utiliser l'instruction line. ::: Correction partielle. ```java! void setup() { size(200,200); } //On défini la fonction de dessin d'une maison nomée void maison() void maison(int x1, int y1, int taille) { //instructions pour déssiner la maion line(x1,y1,x1+taille,y1); line(x1,y1-taille,x1+taille/2,y1-taille-taille/2); //... } //On défini le programme principal appelé void draw() qui appel la fonction maison void draw() { maison(0,height,50); maison(60,height-10,80); //etc.. } ``` ## Boucle Pour la suite on va utiliser la fonction void draw() qui est en réalité une boucle perpétuelle. Pour vous en convaincre executer le programme suivant ```java! int i=0; void setup() { size(200,200); } //On défini le programme principal appelé void draw() on incrémente ici une variable void draw() { i=i+1; println(i); } ``` ##### Exercices 1.8 Que constatez vous? --- ## Boucle = Animation/ Soit le programme suivant qui est à compléter avec votre fonction `void maison(){..}` qui utilise la variable `i`, incrémentée dans la fonction `void draw(){..}` :warning: :::danger * Mettre les instructions de votre fonction maison dans la fonction `void maison(int x1, int y1, int taille){...}` ::: ```javascript! int i = 10; void setup() { size(400,400); } //On défini la fonction de dessin d'une maison nomée void maison() void maison(int x1, int y1, int taille) { //Vos instructions pour déssiner la maion //... line(x1,y1,x1+taille,y1); line(x1,y1,x1,y1-taille); line(x1,y1-taille,x1+taille/2,y1-taille-taille/2); } //On défini le programme principal appelé void draw() qui appel la fonction maison void draw() { //maison(0,height-5,50); maison(100,height-10,i); //maison(200,height-10,100); //maison(140,height-10,40); //etc.. i=i+10; println(i); delay(100); } ``` ## Modulo ```java! int a = 0; void draw() { background(200); a = (a + 1) % width; // 'a' increases between 0 and width line(a, 0, a, height); println(a); println((a + 1) % width); } ``` ![](https://i.imgur.com/rU8wCaL.gif) La fonction backgroung permet "d'effacer" les précédents dessins. Modulo % correspond au reste de la division par width. ##### Exercices 1.9 En utilisant la fonction modulo et l'instruction background. Vous devez réaliser l'animation ci-dessous. ![](https://i.imgur.com/Nt1pWPL.gif) :::danger :warning: Dans le code du modulo on utilise une variable a qui s'incrémente. Dans le programme qui reprend votre fonction maison on utilise une variable i ::: ---