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.


Sujets - yusera

Pages: [1]
1
Fenêtrage / [SFML 2.0] mapCoordsToPixel non reconnue
« le: Août 03, 2015, 04:25:21 pm »
Bonjour,
C'est normal que les fonctions mapPixelToCoords (const Vector2i &point), mapCoordsToPixel (const Vector2f &point) et leurs dérivées que je voudrais utiliser avec les vues ne sont pas disponibles sur la version 2.0 ? Elles ne sont pas reconnues sur mon compilo en tout cas^^

Merci !  ;)

2
Graphique / Position d'un sprite
« le: Mai 13, 2012, 07:37:55 pm »
Bonjour,
J'ai crée une petite GUI pour mon jeu (ici un bouton) et je rencontre un problème. En effet, j'ai un problème avec la position du sprite qui affiche le bouton. Si je lui attribue les coordonnées (500;300), il se positionne à (500;295). Donc ça crée un problème avec la gestion des événements (survole, clique ...).

La fonction qui reçoit la position du bouton et l'attribue au sprite du survole et du "non-survole" (par défaut) :
void Bouton::SetPosition(float px, float py)
{
        x = px;
        y = py;

        bt.setPosition(x,y);
        bt_hover.setPosition(x,y);

        texte.setPosition(x + (width/2 - texte.getGlobalBounds().width/2), y + (height/2 - texte.getGlobalBounds().height/2));
}

J'ai vérifié que x et y correspondaient bien aux paramètres que j'ai envoyé (on sait jamais).
Et la fonction qui initialise les sprites :
void Bouton::LoadImage(sf::Texture &img, sf::Texture &imgHover)
{
        bt.setTexture(img);

        width = img.getSize().x;
        height = img.getSize().y;

        bt_hover.setTexture(imgHover);
        if(bt_hover.getTexture() != NULL)
                isImgHover = true;
        else
                isImgHover = false;
}

Je précise que la différence entre la position envoyée et celle des sprites n'est pas constante (5 dans mon exemple) mais elle dépend de l'ordonnée (plus y augmente, plus la différence augmente).

Voilà, je vois pas d'où ça vient ...

3
Fenêtrage / Problème lors du déplacement de la fenêre
« le: Avril 17, 2012, 10:53:11 pm »
Bonjour,

Alors voilà tout d'abord je ne sais pas si ce post est à mettre dans la partie Graphique ou Fenêtre mais j'ai choisi le forum Fenêtrage car le problème est en lien avec ceci.

Donc j'ai un problème lorsque je clique sur la barre de la fenêtre ou lorsque je la déplace. En effet, je gère la collision d'un sprite et lorsque je fais une des 2 actions ci-dessus, le système de collision est comme "endormi" c'est-à-dire qu'il ne marche plus jusqu'à ce que j’arrête de cliquer ou déplacer la fenêtre.
Voici un code qui fait cela :

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

int main()
{
        sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Window");

        sf::Image Image, image2;
        if (!Image.LoadFromFile("test.png"))
                return EXIT_FAILURE;

        image2.LoadFromFile("test2.png");

        sf::Sprite Sprite(Image);
        //Sprite.SetBlendMode(sf::Blend::None);
        Sprite.SetPosition(200.f, 500.f);

        int ok = 0;
        int descente = 0;
        int v = 0;

        sf::Image BackgroundImage;
    if (!BackgroundImage.LoadFromFile("background.jpg"))
        return EXIT_FAILURE;

        while (App.IsOpened())
        {
                sf::Event Event;
                while (App.GetEvent(Event))
                {
                        if (Event.Type == sf::Event::Closed)// Fenêtre fermée
                                App.Close();
                        if(Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Up)
                                ok = 1;
                        if(Event.Type == sf::Event::KeyPressed && Event.Key.Code == sf::Key::Down)
                        {
                                sf::Sprite s;
                                s.SetImage(image2);
                                Sprite = s;
                        }
                }

               
                float ElapsedTime = App.GetFrameTime();
               
                if (App.GetInput().IsKeyDown(sf::Key::Right)) Sprite.Move( 110 * ElapsedTime, 0);
                if (App.GetInput().IsKeyDown(sf::Key::Left)) Sprite.Move( -110 * ElapsedTime, 0);

                if(ok == 1)
                {
                        if(descente == 0)
                        {
                                if(Sprite.GetPosition().y > 425)
                                {
                                        Sprite.Move(0, (-100+v) * ElapsedTime);
                                        v -= 1;
                                }
                                else
                                {
                                        descente = 1;
                                }
                        }
                        else
                        {
                                if(Sprite.GetPosition().y < 500)
                                {
                                        Sprite.Move(0, (100+v) * ElapsedTime);
                                        v += 1;
                                }
                                else
                                {
                                        descente = 0;
                                        ok = 0;
                                        v = 0;
                                }
                        }
                               
                }

                App.Clear();

                App.Draw(Sprite);

                App.Display();
        }

        return EXIT_SUCCESS;
}
 
C'est un code que j'avais fait pour tester la SFML pour la première fois.
Savez-vous comment régler le problème car, à moins d'imposer le fullscreen, si l'utilisateur bouge la fenêtre le sprite et les pnj du jeu passeront à travers les murs ?

Merci.

Pages: [1]
anything