on peut faire des champs de bits avec des
vector<bool>, et c'est effectivement des bits stoqués les uns après les autres.
Sinon y'a la méthode RLE scanline (c'est moi qui l'appelle comme ça)
de cette manière, on stoque pour le vaisseau pour chaque ligne une suite de valeurs donnant quand le vaisseau commence à être présent, et quand il ne l'est plus.
Imaginons que les 4 premiers pixels sont transparents, les 8 suivants opaques, puis 3 transparents, 2 opaques, et les 15 derniers transparents, on stoque
4,8,3,2,15
et on fait ça pour chaque ligne
Comme en général, les objets n'ont pas trop de trous, ça fait peu de valeurs, même si le sprite est grand.
Pour le décor, on fait pareil.
Le temps de test de collision devient indépendant de la taille et ne dépend plus que de la complexité du contour. C'est plus long à coder, mais ça s'exécute plus vite.
Sinon l'idée du quadtree est bonne et va vite. Mais pareil, l'implémentation peut en faire craquer plus d'un.
Courage.
---------------
-----------------------