Bin je crois pas qu´il y ait 36 méthodes, une dizaine peut etre lol
Déjà tu peux creuser cette idée pour l´adapter à ton système :
1- Test de base if ( monde[y][x] == 1), si c´est faux bin tu zappes, sinon tu affines le test :
2- Suivant la direction de déplacement de ton sprite :
Direction droite : tu testes pixel par pixel en commencant par la colonne de droite ( width) de ton sprite et la colonne gauche du sprite qui bloque ( en l´occurrence 0)
Direction gauche : tu testes pixel par pixel en commencant par la colonne gauche ( 0) de ton sprite et la colonne droite ( width) du sprite qui bloque
Direction haut : tu testes pixel par pixel en commencant par la ligne du haut ( 0) de ton sprite et la ligne du bas ( height) du sprite qui bloque
Direction bas : tu testes pixel par pixel en commencant par la ligne du bas ( height) de ton sprite et la ligne du haut du sprite qui bloque ( height)
En supposant que ta couleur " transparente" est 0, tu peux faire tes tests avec :
if ( MonSprite[x][y] & SpriteBloquant[x][y])
et tu sors de la boucle dés qu´il y a un pixel en commun -> collision
etc . ..
3- Une autre solution + efficace :
Tu calcules la zone d´interesection ( le cadre quoi) en gros tu as :
MonSprite : Xmin1,Ymin1,Xmin1+Width1,Ymin1+Height1
SpriteBloquant : Xmin2,Ymin2,Xmin2+Width2,Ymin2+Height2
Tu calcules l´intersection de ces 2 zones, soit :
XminIntersection,YminIntersection,XmaxIntersection
,YmaxIntersection
et tu testes quels sont les pixels ( de chacun des sprites) qui se superposent..
voilà