BePuyo 0.1 : index
Algorithme de detection des explosions

Cet algorithme est l'aboutissement de l'algorithme de detections des groupes (qui sert accessoirement a produire un affichage plus sympathique)

  1. Selection d'une cellule
  2. Detection et marquage d'un groupe de puyo contigus de la meme couleur
  3. si le nombre de puyo du groupe est superieur ou egal a 4
  4. marquer comme visites et non actifs les puyo actifs
  5. aller en 1 pour selectionner une nouvelle cellule

Selection d'une cellule

On regarde toutes les cellules de haut en bas et de gauche a droite. Des qu'une cellule non marquee est trouvee (attribut visited à FALSE), on lance l'algorithme de detection des groupes dessus.

Detection des groupes

Cet algorithme recursif a pour but de marquer (attributs visited et activeGroup) tous les puyo adjacents d'une meme couleur, et de renvoyer leur nombre.
  1. le groupe a 1 puyo (celui de depart)
  2. on marque ce puyo comme etant actif et ayant ete visite (en modifiant les attributs de marquage)
  3. on ajoute le nombre de puyo adjacents de la meme couleur qui a partir du puyo immediatement a droite si celui-ci n'a pas deja ete marque
  4. on ajoute le nombre de puyo adjacents de la meme couleur qui a partir du puyo immediatement en haut si celui-ci n'a pas deja ete marque
  5. on ajoute le nombre de puyo adjacents de la meme couleur qui a partir du puyo immediatement a gauche si celui-ci n'a pas deja ete marque
  6. on ajoute le nombre de puyo adjacents de la meme couleur qui a partir du puyo immediatement en bas si celui-ci n'a pas deja ete marque
  7. on renvie le nombre de puyo trouves

    Explosion et chutte des puyo

    Si la fonction de recherche des groupes rapporte qu'elle vient de trouver un groupe de taille 4 ou plus, on fait exploser tous les puyo marques actifs (en leur attribuant la couleur 0)
    Apres cela il faut faire retomber tous les puyo qui pourraient se retrouver en suspension, et reprendre l'algorithme depuis le debut pour bien prendre en compte les eventuelles reactions en chaines.

    Cet algorithme a pour avantage d'eviter d'avoir a manier explicitement une structure de groupe ce qui serait tres lourds. Pour reperer les puyo du groupe actif, il suffit de faire un parcours complet du PuyoField et de reperer ceux qui ont l'attribut activeGroup a TRUE .

    retour a l'index de la documentation