BePuyo 0.1 : index
Algorithme de detection des collisions
Cet algorithme est utilise lors du deplacement des Puyo pour qu'ils ne puissent rentrer en collision avec les puyo presents dans le PuyoField.
Son principe est tres simple : on superpose la matrice puyo a la matrice du PuyoField, si au moins une cellule est remplie sur les deux plans, c'est qu'il y a eu une collision.
On sait qu'une cellule est remplie sur les deux plans en multipliant leurs valeurs : une case vide a pour valeur 0, on obtient donc les resultats suivant pour toute cellule de coordonnes [x][y]:
- si la cellule de la matrice puyo est vide et celle du PuyoField aussi : 0*0=0
- si la cellule de la matrice puyo est vide mais pas celle du PuyoField : 0*b=0
- si la cellule de la matrice puyo est pleine mais pas celle du PuyoField : a*0=0
- si les deux cellules sont pleines : a*b!=0 (car a!=0 et b!=0)
En additionnant les produits pour toutes les cellules superposees, on obtient un nombre qui si il est positif signifie qu'il y a eu collision.
Lors du deplacement d'un Puyo, on effectue virtuellement le deplacement, et si il n'y a pas de collision, on l'effectue reelement.