# 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);
}
```

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.

:::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
:::
---