1. Introduction
  2. Coordonnées, fonctions
  3. Tests et conditions
  4. Intervalles et collisions
  5. Diriger avec les touches du clavier
  6. Vecteurs
  7. Faire rebondir une balle
  8. Jouer avec une balle qui rebondit
  9. Tirs rectilignes (laser)
  10. Tirs paraboliques
  11. Remerciements

Intervalles et collisions

Il faudrait détecter quand le carré rouge touche le rectangle vert...

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

suiv. préc.

Travail à faire avec un vidéo-projecteur.

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');