Bien le bonjour/bonsoir,

Je reviens vers vous car je deviens un peu fou. Après avoir passé des heures à y réfléchir, je ne parviens pas à résoudre mon problème.

J'ai un jeu, représenté dans une fenêtre comme ci-dessous :

Nom : jeu.png
Affichages : 324
Taille : 769,8 Ko

Les "bonhommes" que vous voyez dans la fenêtre apparaissent en haut, et sont censés aller dans une direction (droite ou gauche), et s'ils arrivent au bout d'une plate-forme, tomber. Donc il y a en quelque sorte une notion de gravité.

Et là est le problème. J'ai ajouté une variable "gravity" à la structure de mes bonhommes, celle-ci vaut 1 lorsque qu'ils sont dans le vide, et 0 lorsqu'ils sont sur une plate-forme. Donc je dis que gravity vaut toujours 1, jusqu'au moment où la position du bonhomme est la même que celle d'une plate-forme, et là gravity passe à 0, donc non incrémentation de la position sur l'axe des Y du bonhomme.

J'utilise les listes pour les plate-formes et les bonhommes.

J'avais une fonction bien compliquée mais qui me semblait logique, mais qui ne marchait pas, alors je me suis ramené à une fonction beaucoup plus basique, mais qui ne marche toujours pas!
La voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void collide_between_monsters_platforms(object_list * pPlatform_list, object_list * pMonster_list)
{
  object_list * tmp;
  while (pMonster_list != NULL)
    {
      tmp = pPlatform_list;
      while (tmp != NULL)
	{
	  if (pMonster_list->obj->position.y == tmp->obj->position.y)
	    pMonster_list->obj->gravity = 0;
 
	  tmp = tmp->pNext;
	}
      pMonster_list = pMonster_list->pNext;
    }
}
Et ensuite j'ai une fonction qui parcourt la liste de bonhommes et qui, si la partie "gravity" de ce bonhomme vaut 1, incrémente sur l'axe des Y.

Et... Gravity ne passe jamais à 0 quelque soit le bonhomme...

Le cas est peut-être compliqué à comprendre, et j'en suis désolé!

Merci d'avance de vos réponses!

Cordialement.