Travail (activité en classe entière) :
- étudier une stratégie permettant de détecter si deux rectangles sont en collision
- coder une fonction "intersect(a1,b1,a2,b2)" qui détecte si les intervalles [a1 b1] et [a2 b2] ont une intersection vide
- coder une fonction "collision(x1,x2,w1,h1,x2,y2,w2,h2)" qui détecte si deux rectangles sont en collision
- déclencher une explosion si le carré rouge atteint le rectangle vert...
Expliquer les différents sens de l'égalité : "=" et "==".
Les fonctions peuvent être mises n'importe où dans le code (sauf dans une autre fonction !)
Pour s'amuser avec les fonctions, il y a la page suivante...
Fiche-élève
solution :
function intersect(a1,b1,a2,b2){
//renvoie "false" si l'intersection de [a1 a2] et [b1 b2] est vide
if(b1 < a2 | | b2 < a1) return false;
else return true;
}
function collision(x1,y1,w1,h1,x2,y2,w2,h2){
//renvoie "true" si les deux rectangles se rencontrent
if( intersect(x1-w1/2,x1+w1/2,x2-w2/2,x2+w2/2) && intersect(y1-h1/2,y1+h1/2,y2-h2/2,y2+h2/2) ) return true;
else return false;
}
et :
if (collision(x1,y1,10,10,x2,y2,30,10)) explode(x1,y1,'red');