Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Faire sauter un personnage  (Lu 2834 fois)

0 Membres et 1 Invité sur ce sujet

Wellas

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Faire sauter un personnage
« le: Décembre 11, 2016, 07:18:50 am »
Bonjour,

Je ne sais pas si je poste au bon endroit du forum mais je me disais que mon problème n'avais pas de lien avec les autres parties du forum  ::) .

Voilà j'apprend tout juste à utiliser SFML (fais une semaine en fait) et je suis encore débutant en C++ ( 2 mois ) alors j'espère ne pas sembler trop ridicule dans mes questions.

Mon problème est que je cherche à faire un jeux à la mario. j'arrive à faire comme si mon personnage sautait mais une fois en l'aire je ne peu pas diriger mon personnage pour faire en sorte qu'il avance ou recule même si je saute.

C'est le code que j'utilise pour faire mes essaies et en même temps ça évite le bourrage de crâne juste pour une question :

#include <SFML/Graphics.hpp>
#include <iostream>


int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML works!");
    window.setFramerateLimit(60);
    sf::CircleShape shape(10.f);
    shape.setFillColor(sf::Color::Green);
    shape.setPosition(sf::Vector2f(0,580));



    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {
                window.close();
            }

                if(event.type == sf::Event::KeyPressed)
                {
                if(event.key.code == sf::Keyboard::Left)
                {
                    shape.move(-2,0);
                }

                if(event.key.code == sf::Keyboard::Right)
                {
                    shape.move(+2,0);
                }

                if(event.key.code == sf::Keyboard::Up)
                {
                    shape.move(0,-2);
                }

                if(event.key.code == sf::Keyboard::Down)
                {
                    shape.move(0,+2);
                }


                if(event.key.code == sf::Keyboard::Space) // Code pour faire sauter le personnage
                {


                    for(int i(0) ; i < 20 ;i++ )
                    {

                        shape.move(0, -2);
                        window.clear();
                        window.draw(shape);
                        window.display();




                    }
                    for(int i(0) ; i < 20 ;i++ )
                    {

                        shape.move(0, +2);
                        window.clear();
                        window.draw(shape);
                        window.display();
                        std::cout << shape.getPosition().y << std::endl;
                    }
                }
                }
            }








        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}


Attention j'ai jamais dit que mon code de saut était la meilleur façon, je débute et les conseils son les bienvenue  ;)
« Modifié: Décembre 11, 2016, 07:20:32 am par Wellas »

Ariake

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
    • E-mail
Re : Faire sauter un personnage
« Réponse #1 le: Décembre 13, 2016, 01:57:48 pm »
Ton problème viens de l'organisation que tu fait au niveau de tes évènements.

Je pense que la première étape serait pour le moment de te restreindre à utiliser uniquement UN seul et unique "window.display();" essaie de réorganiser ton code avec ce conseil, il se pourrait même qu'a ce moment tu trouve par toi-même comment faire avec cette nouvelle organisation.

Bon début à toi, on est tous passé par la !  :)

Wellas

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Faire sauter un personnage
« Réponse #2 le: Décembre 16, 2016, 11:07:15 pm »
Merci, même si c'est plutôt vague comme réponse lol.

En fais les multiple endroit où j'ai mis un display(); c'est parce que l'image ne bougeait pas et avec ça ,ça fonctionnais mais comme tu dit c'est probablement dû à ma séquence qui est mal fait .

Bref je travail encore là dessus même si la semaine j'ai peu de temps ( travail, enfant, etc ). En fin de semaine je vais continuer de chercher mais entre temps si un bon samaritain peut m'éclairer un peut plus ça aiderais. J'adore la programmation mais j'ai encore du chemin à faire pour avoir la bonne façons de transposer ce que je veux faire en ligne de code, mais je suis tenace quand j'aime quelque chose  ;) 

icone salut

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Faire sauter un personnage
« Réponse #3 le: Février 22, 2017, 09:28:13 am »
Bonjour Wellas.
Si tu veut mon avis la gravité du personnage ne devrait pas être géré par lui même, surtout en une seule frame qui "block" les entrées clavier. ;)
Tu devrait  créé plusieurs fonctions comme saut qui propulse Mario , gravité qui descend Mario ,block qui blockerait Mario pour pas qu'il parte dans les profondeurs ;D...Et ensuite tu les appelerait intelligemment pour donner un effet réaliste.