Bonjour,
bon alors je travail actuellement sur un p'tit jeu (FallDown pour ceux qui connaissent), le principe est de faire passer une balle dans les ouvertures des lignes qui défilent vers le haut. L'objectif étant de franchir un maximum de lignes sans atteindre le haut de la fenêtre.
Donc à chaque fois que ma balle se pose sur une ligne, dans ma boucle principale j'appelle une méthode de mon objet Line destinée à me dire si l'objet dont je lui passe les coordonnées se trouve dans une ouverture (ce qui me sert à la faire chuter si c'est bien le cas).
Cette méthode reçoit donc la position X de l'objet ainsi que sa largeur.
A partir de ces informations elle va parcourir la liste des ouvertures disponibles et vérifier à chaque fois si l'objet peut passer dans l'ouverture (avec une tolérance de 10px).
Ainsi :
Code :
bool Line::inHall(float width, float posX) { for(int i=0;i<nbHall;i++) if ( posX >= brick[hallPos[i]].GetLeft()-10 && posX+width <= brick[hallPos[i]].GetLeft()+brick[hallPos[i]].GetWidth()+10 ) return true; return false; }
|
Mais ce code pose un problème, lorsque deux ouvertures sont adjacentes, si la balle se pose au milieu des deux (sur la jointure) et bien elle ne chute pas. C'est logique.
Cela-dit, je ne sais pas trop comment m'en sortir... Bon c'est pas spécifique au langage, c'est plus de la logique là.
Bref, un coup de main serait le bien venu.
En vous remerciant.
Message édité par dwogsi le 17-02-2008 à 02:42:54
---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/