"Le meilleur moyen est de faire un quadtree"
Encore une fois, on est dans un casse brique là... Imaginons qu'il y ait 10 000 briques (peu probable), la partie collisions prendrait un temps vraiment négligeable même en les testant toutes.
Et d'ailleurs y'a un moyen plus simple et plus optimisé: tu crée un tableau 2D qui te sers de grille, contenant chaque bloc à l'index correspondant à ses coordonnées (genre blocs[0][0] est en bas à droite, blocs[0][1] est juste au dessus etc.).
Ensuite tu get la position de deux coins opposés de la balle , tu les convertis en coordonnées de blocs (en utilisant la hauteur/largeur des blocs et la position de celui en [0][0] pour la conversion) en les mettant dans des variables int minx, maxx, miny, maxy, puis tu parcours avec un for(i = minx à maxx) dans un for(j = miny à maxy) et tu test les collisions uniquement des blocs de coord [i][j] avec la balle.
T'auras toujours les mêmes performances, qu'il y ait 2 blocs ou 2 000 000, contrairement au quadtree qui est d'ailleurs plus adapté à des situations ou on ne peut pas se servir de grille à moins que je dise des conneries.
C'est peut être pas très bien expliqué, mais de toutes façons ça sers à rien d'utiliser un tel système sur un casse brique, c'est pas comme si y'avait 10 millions de blocs à gérer...