Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet Bomberman

Gestion explosions

    23 octobre 2008 à 13:05:05

    Bonjour à tous,
    J'ai bien suivis le tuto sur mario Sokoban (en C) que j'ai programmé et qui marche bien. J'ai donc voulu essayer de faire mon propre jeu, Bomberman, sur la meme base que mario.
    Et mon probleme est le suivant: Pour la gestion des mouvements du personnage je dois utiliser un WaitEvent. Hors pour le minuteur de la bombe je dois utiliser un PollEvent. J'ai donc essayé de remplacer le waitevent par le pollevent, probleme, ca marche pour la bombe, mais le personnage se deplace d'une traite à une vitesse assez importante.

    Merci pour vos reponses.
    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2008 à 13:41:22

      Il faut limiter le nombre de frame par seconds (100 fps est une bonne marge, sans vouloir rentré dans d'interminable débat).Seulement si pour une quelconque raison tes fps chutent, ton perso risque de ralentir .Basiquement pour avoir un déplacement constant quelque soit les fps il suffit de faire un truc du genre :

      positionPerso += vitesse * dureeFrame;
      


      On multiplie la vitesse par la duree d'une frame, si ta vitesse est egale à 100 par exemple , ton perso aura traverser 100 pixel en une seconde , et cela qu'elle que soit le nombre de fps.
      Imaginons que tu es 2 frames par seconde , une frame durera donc 0.50 seconde, 100 * 0.50 = 50 etc...
      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2008 à 13:44:22

        Tu peux - si c'est ce que tu souhaites faire - demander à ce que le joueur relâche les flèches après chaque déplacement d'une case avant de pouvoir se déplacer à nouveau par exemple.

        Tu peux également préférer déplacer le personnage en pixel par pixel et non en case par case.

        De plus, en pollEvent, pense à utiliser un SDL_Delay pour ralentir un peu le jeu (et ménager le cpu)

        EDIT : Pour rebondir sur ce qu'à dit RyuSama, il y a typiquement deux approches. Tu peux calculer la vitesse en fonction du temps écoulé, mais ça t'obliges à faire ça sur chaque vitesse de déplacement (personnages, ennemis, etc.). Une autre approche que je préfère est de garantir un fps constant (hors ralentissements...) en calculant le temps à passer au SDL_Delay en fonction du temps passer dans la boucle. Celà simplifie considérablement la gestion de la vitesse.
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2008 à 17:41:28

          Ok Merci Bcp, jvais tester ça.
          • Partager sur Facebook
          • Partager sur Twitter

          Projet Bomberman

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown