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 - yusera

Pages: [1] 2 3 Suivante »
1
Fenêtrage / Re : [SFML 2.0] mapCoordsToPixel non reconnue
« le: Août 03, 2015, 07:51:54 pm »
Merci ! En fait ça doit être une version non finale de la SFML 2.0 et du coup tout est ok ;)

2
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 !  ;)

3
Graphique / Re : Position d'un sprite
« le: Juin 10, 2012, 08:36:36 pm »
Je vous posterai un code minimal une fois que j'aurai le temps (avec les études)

4
Graphique / Re : Position d'un sprite
« le: Juin 06, 2012, 02:02:14 pm »
Tu veux que je fasse ça ?
sf::View view(sf::FloatRect(0, 0, 1024, 768));
view.setCenter(1024/2,768/2);

Ça ne change rien.
Pour le moment ce n'est pas grave vu que je peux simplement supprimer la vue mais lorsque il va y avoir plusieurs résolutions, je vais en avoir besoin.

5
Graphique / Re : Re : Position d'un sprite
« le: Juin 04, 2012, 08:12:52 pm »
Dans le constructeur, donner la valeur de width à height me parait étrange.
En effet merci je n'avais pas fait gaffe.
Mais le problème ne venait pas de là (il est résolu mais j'ai encore une question, cf. mon poste précédent)

6
Graphique / Re : Position d'un sprite
« le: Juin 03, 2012, 09:53:04 am »
J'ai trouvé la solution, cela vient de sf::View de la fonction main() :
sf::RenderWindow App(sf::VideoMode(1024, 768, 32), "titre", sf::Style::Close);
sf::View view(sf::FloatRect(0, 0, 1024, 768));

Mais vu que view fait la même taille que App, pourquoi il y a-t-il un décalage vertical ?

7
Graphique / Re : Position d'un sprite
« le: Mai 31, 2012, 09:05:06 pm »
int width : la longueur du bouton
int height : la largeur du bouton

Ça me semble pas compliqué à comprendre.
Je les initialise avec la taille du texte dans le constructeur au cas où le bouton ne possède pas de texture. Comme ça le bouton aura pour taille la taille du texte.

Citer
Puis bt_hover et bt???
sf::Sprite bt : image du bouton.
sf::Sprite bt_hover : image du bouton lors du survole de la souris.

Sinon la fonction SetButtonSize(sf::Vector2i size) permet simplement de modifier la taille du bouton si la taille ne convient pas.
Je précise que cette classe reste "brouillon", elle sera améliorer mais pour le moment je reste simple vu que je suis confronté à un problème (sujet du topic)

8
Graphique / Re : Position d'un sprite
« le: Mai 26, 2012, 07:09:00 pm »
GUIButton.hpp
#ifndef HEADER_GUI_BUTTON
#define HEADER_GUI_BUTTON

#include <SFML/Graphics.hpp>
#include "GUI.hpp"
#include <sstream>
#include <iostream>

using namespace std;

class Bouton
{
        public :
                Bouton(string text = "", sf::Color color = sf::Color(255, 255, 255));
                //~Bouton();
                void Draw(sf::RenderWindow &App);
                void LoadImage(string chemin, string cheminHover = "");
                void LoadImage(sf::Texture &img, sf::Texture &imgHover = sf::Texture());       
                int SetEvent(const sf::Event &e, sf::RenderWindow &App); // gestion des evenements
                void SetValue(string v);
                string GetValue();

                void SetText(string text);
                void SetTextColor(sf::Color color);
                void SetButtonSize(sf::Vector2i size);
                void SetPosition(float x, float y);
                void SetFont(const sf::Font &Font);
                void SetGoTo(int v);
                int GetGoTo();
                void SetVisibility(bool value);
                bool GetVisibility();
                void SetTextSize(int size);

        private :
                sf::Texture img_bt, img_bt_hover;
                sf::Sprite bt, bt_hover;
                sf::Text texte;

                string value;
                int width, height;
                bool visibility, isImgHover;
                int goTo;
                float x, y;
};

#endif

GUIButton.cpp
#include "GUIButton.hpp"

Bouton::Bouton(string text, sf::Color color) : value("none"), width(0), height(0), visibility(true), goTo(-1), x(0), y(0)
{
        texte.setString(text);
        texte.setColor(color);

        width = texte.getGlobalBounds().width;
        height = texte.getGlobalBounds().width;
}

void Bouton::Draw(sf::RenderWindow &App)
{
        if(visibility)
        {
                if(value == "hover" && isImgHover)
                        App.draw(bt_hover);
                else
                        App.draw(bt);

                App.draw(texte);
        }
}

void Bouton::LoadImage(string chemin, string cheminHover)
{
        img_bt.loadFromFile(chemin);
        bt.setTexture(img_bt);

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

        if(!cheminHover.empty())
        {
                img_bt_hover.loadFromFile(cheminHover);
                bt_hover.setTexture(img_bt_hover);
                isImgHover = true;
        }
        else
                isImgHover = false;
}

void Bouton::LoadImage(sf::Texture &img, sf::Texture &imgHover)
{
        img_bt = img;
        bt.setTexture(img_bt);

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

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

int Bouton::SetEvent(const sf::Event &e, sf::RenderWindow &App)
{
        if(visibility) // On utilise e lorsque le bouton est visible
        {
                // Renvoie clique si on clique sur le bouton ou si on appuie sur ENTRER lorsque le bouton est survolé
                if((sf::Mouse::isButtonPressed(sf::Mouse::Left) && sf::Mouse::getPosition(App).x >= x && sf::Mouse::getPosition(App).x <= x+width
                        && sf::Mouse::getPosition(App).y >= y && sf::Mouse::getPosition(App).y <= y+height) || ((e.type == sf::Event::KeyPressed) && (e.key.code == sf::Keyboard::Return) && value == "hover"))
                                return CLICKED;
               
                // SOURIS
                if(isImgHover) // Si il y a une image lors du passage de la souris
                {
                        // Si la souris est sur le bouton
                        if((sf::Mouse::getPosition(App).x >= x && sf::Mouse::getPosition(App).x <= x+width)
                        && (sf::Mouse::getPosition(App).y >= y && sf::Mouse::getPosition(App).y <= y+height))
                        {
                                SetValue("hover");
                                return SURVOL;
                        }
                        else
                                SetValue("none");
                }
        }
        return -1; // Il n'y a pas d'évènement
}

void Bouton::SetValue(string v)
{
        if(!v.empty() && value != v)
                value = v;
}

string Bouton::GetValue()
{
        return value;
}

void Bouton::SetText(string text)
{
        texte.setString(text);
}

void Bouton::SetTextColor(sf::Color color)
{
        texte.setColor(color);
}

void Bouton::SetButtonSize(sf::Vector2i size)
{
        width = size.x;
        height = size.y;
}

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));
}

void Bouton::SetFont(const sf::Font &Font)
{
        texte.setFont(Font);
}

void Bouton::SetGoTo(int v)
{
        goTo = v;
}

int Bouton::GetGoTo()
{
        return goTo;
}

void Bouton::SetVisibility(bool value)
{
        visibility = value;
}

bool Bouton::GetVisibility()
{
        return visibility;
}

void Bouton::SetTextSize(int size)
{
        texte.setCharacterSize(size);
}

9
Graphique / Re : Position d'un sprite
« le: Mai 18, 2012, 10:49:09 am »
Je l'ai pas dit mais j'utilise la version 2.0.
Et je précise que j'avais déjà ce problème avec la version 1.6.

10
Graphique / Re : Position d'un sprite
« le: Mai 16, 2012, 08:57:43 pm »

http://www.imagup.com/data/1151860054.html
En gros, la barre grise a pour équation y=200 (je l'ai ajouté avec photofiltre) et on peut voir que le 1er bouton, bien que je lui ai passé en coordonnées (500;200), est plus bas que la barre. Donc il y a un léger problème ...

11
Graphique / Re : Position d'un sprite
« le: Mai 16, 2012, 04:19:17 pm »
Ouais mais là c'est pas un problème de centrage de texte mais l'image ne s'affiche pas à la position que j'ai envoyé.

12
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 ...

13
Fenêtrage / Re : Problème lors du déplacement de la fenêre
« le: Mai 02, 2012, 01:39:58 pm »
Pas de réponse ?

14
Fenêtrage / Re : Problème lors du déplacement de la fenêre
« le: Avril 29, 2012, 12:55:54 pm »
Alors voilà, j'ai réussi à afficher le sf::RenderWindow mais avec un thread différent :

#include <SFML/Graphics.hpp>
#include "all_screens.hpp"

Engine::Engine(sf::RenderWindow &w) : App(w)
{

}

void Engine::Run()
{
        App.Create(sf::VideoMode(1024, 768, 32), "Nouveau Jeu", sf::Style::Close);

        // Vue
        sf::View view(sf::FloatRect(0, 0, 1024, 768));
        App.SetView(view);

        // Menu/Jeu/Options

        Menu s_menu; // Creation d'un menu
        screens.push_back(&s_menu);
        Jeu s_jeu; // Creation d'un affichage pour le jeu
        screens.push_back(&s_jeu);
        int screen(0);

        while(screen >= 0)
        {
                cout << screen << endl;
                screen = screens[screen]->Run(App);
        }
}

int main(int argc, char** argv)
{
        sf::RenderWindow Window;
        Engine App(Window);
        App.Launch();
        sf::Clock c;

        while(c.GetElapsedTime() < 20);

        return EXIT_SUCCESS;
}

#ifndef HEADER_ALL_SCREENS
#define HEADER_ALL_SCREENS

#include "Screen.hpp"

// Screens :
#include "Menu.hpp"
#include "Jeu.hpp"

class Engine : public sf::Thread
{
        public :
                Engine(sf::RenderWindow &w);
                virtual void Run();

        private :
                sf::RenderWindow &App;
                std::vector<Screen*> screens;
};

#endif

Et la fonction Run de Menu et Jeu :
int Menu::Run(sf::RenderWindow &w)
{
        sf::RenderWindow &App = w;
        // ....
}
 

Donc tout s'affiche correctement, le seul problème est que ce que le problème initial (le sujet de la discussion) n'est pas résolu. Lorsque je clique, déplace la fenêtre, le programme s'arrête toujours et donc dans mon cas, les collisions (le plus important actuellement) sont ignorées.

15
Fenêtrage / Re : Problème lors du déplacement de la fenêre
« le: Avril 28, 2012, 10:19:41 pm »
Je vais passer bientôt à la SFML 2.0, ça réglera peut-être le problème ?

Pages: [1] 2 3 Suivante »