BePuyo 0.1 : index
PuyoCouple
PuyoCouple.h
PuyoCouple.cpp
Cette classe represente les couples de Puyo : de petites boules de gelee colorees et mausantes. Les PuyoCouple sont autonomes : ils savent evoluer lateralement, tomber, et tourner.
Pour chaque PuyoCouple, il existe un master-puyo et un slave-puyo. Lors de la rotation, le slave puyo tourne autour du master puyo.
Lors de leur chutte, si l'un des deux Puyo touche le sol ou atterit sur un autre Puyo du PuyoField, il se stabilise, sort du couple et laisse l'autre tomber le plus bas possible.
Index des methodes
- PuyoCouple(int x, int ca, int cb) c'est le constructeur de la classe. x represente l'abscisse du master puyo (le slave puyo est a sa droite), ca la couleur du master puyo, cb la couleur du slave puyo.
Une fois cree le Puyo n'est pas directement inclus dans le PuyoField, il faut explicitement l'y faire apparaitre.
- showPuyo(PuyoField*) , hidePuyo(PuyoField*) les PuyoCouple sont présents directement sur la matrice Puyo du PuyoField. Avant tout deplacement il faut donc que le Puyo efface de lui meme ses Puyo avant de les replacer a l'endroit qui convient.
- int movePuyo(int dep, PuyoField*) permet de deplacer lateralement le Puyo (ou couple de Puyo) vers la droite si dep > 0 ou vers la gauche si dep < 0. Si dep=0 il ne bouge pas. Le pointeur vers un PuyoField sert a le renseigner sur le PuyoField dans lequel il evolue (le Puyo refusera de lui meme de se deplacer si cela devait entrainer une collision avec un autre Puyo du PlayField (cad l'instance de PuyoField qui représente l'aire de jeu) ou avec l'un des Puyo fantomes qui evitent de sortir du PuyoField).
Retourne 1 si le deplacement s'est effectue 0 sinon.
- int fall(PuyoField*) fait tomber le PuyoCouple (il est bon d'appeller cette methode automatiquement et régulièrement lors du jeu). Lorsqu'un des deux puyo atterit, il peut se separer pour laisser tomber l'autre encore plus bas (comme le veut la puyo logique).
Renvoie 1 si la chutte s'est bien effectuee 'avec eventuellement une separation) 0 sinon (il est alors temps d'effectuer la detection des PuyoExplosions et de balancer un nouveau Puyo dans le PuyoField)
- int rotatePuyo(int alpha, PuyoField*) fait tourner le slave puyo autour du master puyo par increments de plus ou moins pi/2 radians (en fonction du signe de alpha).
Comme d'habitude renvoie 1 si la rotation s'est bien passee 0 si elle est impossible
- int coutPuyo() renvoie le nombre de Puyo présents dans le PuyoCouple. Si ce nombre est 0, c'est que le PuyoCouple est complètement tombé et qu'il faut lancer la détection des explosions.
Structures de donnees
- Puyo *pMatrix[3][3] représente le PuyoCouple.. Le master puyo est en [1][1], et le slave puyo se ballade entre [2][1], [1][0], [0][1], et [1][2] (en gros il ne vas pas dans les diagonales).
Une methode printPuyo() sert au debuggage de cette classe et affiche sommairement la pMatrix.
Les coordonnées sont inversées dans l'axe vertical et les indices commences à 0:
[0;0] | [0;1] | [0;2] |
[1;0] | [1;1] | [1;2] |
[2;0] | [2;1] | [2;2] |
- int x , y sont les coordonnes de la case [0][0] de la pMatrix, dans le PuyoField auquel le Puyo est associe (associer a un meme Puyo plusieurs PuyoField ne peut amener que ruine et desolation mais ca vous vous en doutez deja ;) )
- int puyoCount recense le nombre de Puyo present dans le 'couple'. Fixe a 2 a la creation, ce nombre peut baisser lors des chuttes successives du Puyo. Lorsqu'il atteint 0, la methode de chutte renvoie automatiquement que les deux puyo sont tombes et qu'il faut passer au suivant.