Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - clavos

Pages: [1]
1
Graphique / Re : problème de conteur de point
« le: Février 25, 2014, 01:56:30 am »
Pour transformer un entier en String il y a aussi :

string chaine = std::to_string(50);

Ici, on déclare une chaîne de caractère "chaîne" qui contiendra l'entier 50.
Je trouve cette méthode beaucoup plus pratique et plus simple.
Peut être que tu n'auras plus ton bug avec elle ? :)

2
Graphique / Re : Problème de collision entre deux CircleShape
« le: Février 23, 2014, 01:24:58 am »
J'ai enlevé ceux en dehors de la boucle et ... ca a fonctionné !  ;D
Merci beaucoup pour votre aide  :)

Maintenant ca a engendré d'autre bug, mais je verrais par moi même  :P

3
Graphique / Re : Problème de collision entre deux CircleShape
« le: Février 22, 2014, 06:58:39 pm »
Merci pour la réponse ;)
Cependant je l'avais déjà mis dans la boucle :(

Voici le code complet :
        RenderWindow window(VideoMode(800, 400), "Test");//Création de la fenêtre

        CircleShape cercle2(70);//Création du point rouge immobile
        cercle2.setFillColor(Color::Red);
        cercle2.setPosition(330,130); // On place le point rouge au centre
        FloatRect box2 = cercle2.getGlobalBounds();//On récupère le cadre autour de la forme

        CircleShape cercle1(50);// Création du point vert déplacable
        cercle1.setFillColor(Color::Green);
        FloatRect box1 = cercle1.getGlobalBounds();//On récupère le cadre autour de la forme

        int d=0,e=0; // Coordonnées du point vert

        while (window.isOpen())//Boucle principale
        {
                Event event;
                while (window.pollEvent(event))
                {
                        if (event.type == Event::Closed)
                                window.close();
                }
                if (sf::Keyboard::isKeyPressed(Keyboard::Right))//Déplacement vers la droite
                {
                        if (d<700 && !(box1.intersects(box2))) {        d=d+1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                        cout<<d<<"    "<<e<<endl;



                }
                if (sf::Keyboard::isKeyPressed(Keyboard::Left))//Déplacement vers la gauche
                {
                        if (d>0 && !(box1.intersects(box2))) {  d=d-1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                        cout<<d<<"    "<<e<<endl;



                }
                if (sf::Keyboard::isKeyPressed(Keyboard::Up))//Déplacement vers le haut
                {
                        if (e>0 && !(box1.intersects(box2))) {  e=e-1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                        cout<<d<<"    "<<e<<endl;



                }
                if (sf::Keyboard::isKeyPressed(Keyboard::Down))//Déplacement vers le bas
                {
                        if (e<300 && !(box1.intersects(box2))) {        e=e+1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                        cout<<d<<"    "<<e<<endl;



                }


                if (sf::Keyboard::isKeyPressed(Keyboard::I))// En pressant "I", on a des infos sur la collision
                {
                        if (box1.intersects(box2))
                        {
                                cout<<"Il y a collision ! "<<endl;
                        }
                        if (!(box1.intersects(box2)))
                        {
                                cout<<"Il n'y a pas de collision ! "<<endl;
                        }
                }
       
        FloatRect box2 = cercle2.getGlobalBounds();//On récupère le cadre autour de la forme
        FloatRect box1 = cercle1.getGlobalBounds();//On récupère le cadre autour de la forme

                //Actualise la fenêtre
                window.clear();
                window.draw(cercle2);
                window.draw(cercle1);
                window.display();
        }

        return 0;

Le " cout<<d<<"   "<<e<<endl; " et l'événement I sont des infos dans la console qui étaient la pour m'aider, ça n'influe pas sur le programme.

4
Graphique / Problème de collision entre deux CircleShape
« le: Février 22, 2014, 04:29:56 pm »
Bonjour !  :)
Je suis encore un débutant en SFML, et j'essaye donc de me familiariser avec en essayant diverse chose.

Dans une fenêtre j'ai crée deux CircleShape ( un vert que je peux déplacer par des évé,ements que j'ai fait, et un rouge qui lui est immobile ). Mon but était de déplacer ce point vert et de l'emmener vers le point rouge. A ce moment, lors de la collision entre les deux point, je ne suis plus censé pouvoir déplacer le point vert dans la direction du point rouge ( il est bloqué par le point rouge ).

Cependant ca ne marche pas, et mon point vert peux traverser mon point rouge :(

Voici la création de mes deux CircleShape :
CircleShape cercle2(70);//Création du point rouge immobile
        cercle2.setFillColor(Color::Red);
        cercle2.setPosition(330,130); // On place le point rouge au centre de ma fenêtre
        FloatRect box2 = cercle2.getGlobalBounds();//On récupère le cadre autour de la forme

        CircleShape cercle1(50);// Création du point vert déplacable
        cercle1.setFillColor(Color::Green);
        FloatRect box1 = cercle1.getGlobalBounds();//On récupère le cadre autour de la forme
 
Le cercle vert a pour coordonnées (d,e) :)

Et voici par exemple l'événement que j'utilise pour déplacer mon point vert à droite :
                if (sf::Keyboard::isKeyPressed(Keyboard::Right))//Déplacement vers la droite
                {
                        if (d<700 && !(box1.intersects(box2))) {        d=d+1;}// Test si on peux déplacer
                        cercle1.setPosition(d, e);
                        window.clear();
                        window.draw(cercle1);
                }
Je précise que le " d<700 " est un test pour que le point ne sorte pas de la fenêtre :)

Bref, je ne vois pas le problème  :(
Si vous le souhaitez je peux vous fournir le code en entier, il n'est pas très long, et je l'ai commenté.

Merci d'avance !  :)

Pages: [1]