---
# System prepended metadata

title: SNT Seq 4

---

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