Documentation

Boucles

Répéter une instruction.

La boucle for

Changez 5 en 50 pour en avoir cinquante ;

for (let i = 0; i < 5; i++) {
  let x = i * 10;
  circle(x, 200, 40);
}

let i = 0 ; on crée une variable qui va nous dire à combien de répétition on est.

i < 5 ; avant chaque tour, on vérifie. Si c'est vrai, on exécute le bloc, si c'est faux, on sort.

i++ ; après chaque répétition, on ajoute 1 au compteur puis on retourne à l'étape précédente

Les valeurs prises par i sont donc : 0, 1, 2, 3, 4.

On compte à partir de 0.

Répartir sur toute la largeur

let total = 12;
let span = width / total;

for (let i = 0; i < total; i++) {
  let x = (i * span); 
  circle(x, height / 2, span;
}


On peut aussi faire avancer le compteur par pas plutôt que par unité.

let step = 20;
for (let x = 0; x < width; x += step) {   // x avance de`step` en `step`
  line(x, 0, x, height);
}

Tableaux

Un tableau stocke plusieurs valeurs dans une seule variable.

let sizes = [30, 60, 40];
let shapes = ["cercle", "carré", "triangle"];
let palette = ['#0d0d0d', '#e8543f', '#f2e8d5'];

On accède à une valeur par son index, en commençant à 0.

sizes[0]      // 30 ; premier élément
sizes[1]      // 60
sizes[2]      // 40 ; dernier élément
sizes.length  // 3  ; le nombre d'éléments

Parcourir un tableau

La boucle et le tableau vont ensemble, on va utiliser i comme index.

let positionsX = [100, 200, 300];
let sizes = [30, 60, 40];

let colorA = color(220, 0, 15);
let colorB = color(25, 180, 120);
let colorC = color(120, 120, 200);
let palette = [colorA, colorB, colorC];

for (let i = 0; i < sizes.length; i++) {
  fill(palette[i]);
  circle(positionsX[i], 200, sizes[i]);
}

Ajouter au fil du temps

let points = [];              // tableau vide au départ

function setup() {
  createCanvas(600, 600);
}

function mousePressed() {
  points.push({ x: mouseX, y: mouseY });   // on ajoute à la fin
}

function draw() {
  background(240);
  for (let i = 0; i < points.length; i++) {
    circle(points[i].x, points[i].y, 20);
  }
}

Extension ; la grille

Une boucle à l'intérieur d'une autre boucle produit une grille. La boucle extérieure parcourt les colonnes, l'intérieure parcourt les lignes.

let colonnes = 10;
let lignes = 10;
let cellule;

function setup() {
  createCanvas(500, 500);
  cellule = width / colonnes;
}

function draw() {
  background(240);

  for (let i = 0; i < colonnes; i++) {       // i → colonnes, de gauche à droite
    for (let j = 0; j < lignes; j++) {       // j → lignes, de haut en bas
      let x = i * cellule + cellule/2;
      let y = j * cellule + cellule/2;
      circle(x, y, cellule);
      // text('i:'+i+'\nj:'+j, x, y);
    }
  }
}

Pièges fréquents

Boucle infinie

La condition de sortie n'est jamais fausse.

Toutes est au même endroit

Aucun paramètre ne dépend de i.

Le sketch rame

Une grille 200 × 200 fait 40 000 formes par frame.