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

Pages: [1] 2 3 ... 7 Suivante »
1
Général / Re: Boutons à la même position
« le: Août 02, 2017, 04:40:18 pm »
Problème réglé, merci de ton aide @Kimci86
En jouant avec des booléans j'ai pû régler le soucis.

2
Général / Re: Boutons à la même position
« le: Juillet 26, 2017, 11:26:38 pm »
Voilà tu as bien compris le fonctionnement. Ta première solution n'est pas possible (je crois), car le premier bouton permet d'afficher d'autres boutons ensuite, là sur le coup j'en ai qu'un seul qui est la position du premier. Et une fois le premier cliqué il disparait (il n'est plus draw) pour laisser place au second bouton. Et j'utilise deux boutons par simplicité. Après ta deuxième méthode est jouable, mais moins pratique d'un point de vue compréhension du code.

3
Général / [Résolu] Boutons à la même position
« le: Juillet 26, 2017, 07:16:36 pm »
Bonjour,

Je me retrouve face à un problème, je dispose de deux boutons, qui sont les deux à la même position x/y. Le fonction attendu est le suivant : Si j'appuie sur le premier bouton, le second devient cliquable, puis le second effectue une action quelconque.
À savoir que j'ai une classe bouton, avec une fonction toute simple pour vérifier si le bouton (rectangleShape) est cliqué.

bool Button::isClicked(Event *event, Vector2f *worldPos)
{
    if((event->type == Event::MouseButtonPressed) && (event->mouseButton.button == Mouse::Left) && (button_GB.contains(worldPos->x, worldPos->y)))
    {
        return true;
    }
    else
    {
        return false;
    }
}

Et donc, dans le fonctionnement, j'ai une variable qui passe à true si le premier bouton est cliqué. Et ensuite j'ai une condition avec la fonction juste au dessus et avec la variable précédente :

if(button1[i].isClicked(event, worldPos))
{
      variable2 = true;
}
if(button2[i].isClicked(event, worldPos) && variable2)

Et je fais ça pour les deux boutons, mais si j'appuie sur le premier, je passe directement à la dernière action, et je ne vois pas le second bouton (le clic se fait sur les deux directements). J'espère avoir été suffisament clair sur l'explication.

Pour passer outre ce problème, j'ai pensé à laisser un petit délai. Mais rien n'y fait, cela change rien.

Auriez vous une idée de comment contrer ce soucis ? Je demande pas forcement du code, juste une piste.

Merci d'avance

4
Général / Re : Erreur lorsque je lance l'exécutable de mon projet..
« le: Décembre 12, 2016, 04:35:22 pm »
Sinon il y a le tuto pour inclure tes dll à ton executable ;) http://www.sfml-dev.org/tutorials/2.4/start-cb-fr.php

Et oh pire tu ajoutes toutes les .dlls (tu dois en avoir 6 environ à ajouter) et puis ton .exe se lancera sans aucun soucis !

5
Général / Re : tableau de sprite
« le: Novembre 20, 2015, 07:03:50 am »
Dans tous les cas tu peux les détruire que ce soit avec un vector ou avec l'opérateur new, il te suffira de faire .pop_back() ou delete pour l'opérateur new.

Le truc important à savoir c'est combien tu veux de sprites ? Car si tu en as beaucoup autant opter pour un vertexArray (Comme on peut le voir dans le tutoriel "Concevoir ses formes avec les tableaux de vertex")

Mais sinon pour l'opérateur new il te suffit de faire :

NomDeTonObjet *NomDeTonTableau = new NomDeTonObjet[Nbr_d'objet_total_dans_ton_tableau];
Et pour y accéder tu peux faire NomDeTonTableau[ID] ...

Sinon je te conseille d'aller voir ici : http://www.cplusplus.com/reference/new/operator%20new[]/

6
Général / Re : bad_alloc avec une classe héritant de Drawable
« le: Septembre 17, 2015, 11:09:24 pm »
Merci beaucoup ! Tout fonctionne correctement. Je n'avais pas fait attention à ce détail.

Merci pour votre aide !  :)

7
Général / Re : bad_alloc avec une classe héritant de Drawable
« le: Septembre 14, 2015, 10:10:01 pm »
Je pense que ce n'est pas un manque de mémoire ou même une fuite car même avec un tableau de 50 objets cela me fait ce problème... Et j'ai déjà pu exécuter le programme avec plus de 500 000 objets. 

Ma map est un tableau d'objet. Déclaré dans le header.

Tile * map = new Tile[_nbrTile];

Et le debugger me renvoie une erreur désormais sur mon constructeur de TileMap qui celui-ci est désuet de ligne de code. 

8
Général / Re : bad_alloc avec une classe héritant de Drawable
« le: Septembre 12, 2015, 03:17:11 pm »
Me revoilà en ayant utilisé mon debbuger comme il se doit (enfin je crois ^^)
Donc voilà les erreurs ce que me renvoie le debugger :



Et voici ma fonction :

void Tile::setPosition(int posX, int posY)
{
    _posX = posX;
    _posY = posY;
}
 

Et la fonction qui appelle cette dernière fonction :

void TileMap::Load(int nbrTile)
{
    _nbrTile = nbrTile;
    mapSize = sqrt(_nbrTile);

    if(!textureTile.loadFromFile("Resources/Tileset.png"))
        cout << "Error Texture" << endl;

    tileArray.setPrimitiveType(sf::Quads);



    ///Génération de haut en bas puis de gauche à droite(Inverser la boucle pour avoir de gauche à droite puis de haut en bas)
    for(int i = 0; i < mapSize; i++)
    {
        for(int j = 0; j < mapSize; j++)
        {
            int id = i * mapSize + j;
            map[id].setPosition(i, j);
            map[id].selectTile(0);
            map[id].init(&vertex, &tileArray);
        }
    }
}
 

Et si il faut je peux fournir d'autre truc aussi. Mais je pense que le problème vient d'un de ces endroits :p

9
Général / Re : bad_alloc avec une classe héritant de Drawable
« le: Septembre 11, 2015, 10:33:42 pm »
J'ai pris l'archive pour Mingw 4.9.2 pour Windows.
Et ce que je ne comprends pas c'est que dans mon programme j'ai déjà utilisé des propriétés sfml tels que les vertex.

Je vais essayer se fournir un morceau de code fonctionnel rapidement.

J'ai essayé mon debugger mais j'ai du mal avec (surement pour ca que je ne trouve pas l'erreur avec ) ... Il faut que je me plonge dedans  :P

10
Général / Re : bad_alloc avec une classe héritant de Drawable
« le: Septembre 11, 2015, 04:02:05 pm »
Windows 8.1 64 bits
MinGW 4.9.2
Il semblerait que ce soit SFML 2.3 sans aucune variante ...

Et bien non ... Le problème c'est que même avec seulement un sf::RectangleShape et un draw j'ai ce bad_alloc ...

11
Général / [Résolu]bad_alloc avec une classe héritant de Drawable
« le: Septembre 11, 2015, 03:43:03 pm »
Bonjour,

Je me trouve confronté à un problème assez important. J'ai une classe "Button" que j'utilise pour créer des boutons à partir de RectangleShape que j'utilise depuis SFML 2.0, je suis pas récemment sur SFML 2.3 et depuis ma classe (dont je n'ai rien changé) me sort des bad_alloc de temps à autres.
J'ai essayé de voir d'où venait ces bad_alloc avec le debbuger mais je n'ai rien trouvé.
Des fois tout fonctionne correctement et d'autres fois impossible de lancer le programme sans avoir ce bad_alloc.

Et je suis persuadé que l'erreur vient de cette classe car si je ne l'appelle pas dans mon main tout se passe bien.


Voici ma classe Button :

#include "Button.h"

Button::Button()
{
    if (!font.loadFromFile("Resources/Hyperspace.ttf"))
    {
        std::cout << "erreur font" << std::endl;
    }
    button_text.setFont(font);
}

Button::~Button()
{

}

Button::Button(int width, int height, int posX, int posY, int r, int g, int b, bool shadow, std::string text)
{
    if (!font.loadFromFile("Resources/Hyperspace.ttf"))
    {
        std::cout << "erreur font" << std::endl;
    }
    button_text.setFont(font);

    button.setSize(sf::Vector2f(width, height));
    button.setPosition(posX, posY);
    button.setFillColor(sf::Color(r,g,b));

    button_GB = button.getGlobalBounds();

    button_text.setCharacterSize(100);
    button_text.setString(text);
    button_text.setColor(sf::Color::White);

    text_GB = button_text.getGlobalBounds();
    button_text.setPosition(posX + ((width - text_GB.width)/ 2) , posY + ((height - text_GB.height)/ 2 - (text_GB.height / 2)));

    if (shadow == true)
    {
        button_shadow.setSize(sf::Vector2f(width, height));
        button_shadow.setPosition(posX + 2, posY + 2);
        button_shadow.setFillColor(sf::Color(r,g,b-80));
    }
}



void Button::setSize(int width, int height)
{
    m_width = width;
    m_height = height;
    button.setSize(sf::Vector2f(width, height));
    button_GB = button.getGlobalBounds();
}

void Button::setPosition(int posX, int posY)
{
    m_posX = posX;
    m_posY = posY;
    button.setPosition(posX, posY);
    button_GB = button.getGlobalBounds();
}

void Button::setColor(int red, int green, int blue)
{
    m_red = red;
    m_green = green;
    m_blue = blue;
    button.setFillColor(sf::Color(red,green,blue));
}

void Button::setText(string text)
{
    m_text = text;
    button_text.setCharacterSize(20);
    button_text.setString(text);
    button_text.setColor(sf::Color::White);

    text_GB = button_text.getGlobalBounds();
    button_text.setPosition(m_posX + ((m_width - text_GB.width)/ 2) , m_posY + ((m_height - text_GB.height)/ 2 - (text_GB.height / 2)));
}

void Button::setShadow(bool activate)
{
    if (activate == true)
    {
        button_shadow.setSize(sf::Vector2f(m_width, m_height));
        button_shadow.setPosition(m_posX + 2, m_posY + 2);
        button_shadow.setFillColor(sf::Color(m_red, m_green, m_blue-80));
    }
}

void Button::setSprite(string filepath)
{
    if (!button_spr_texture.loadFromFile(filepath))
    {
        std::cout << "erreur texture button" << std::endl;
    }
    button.setTexture(&button_spr_texture);
}

bool Button::isClicked(sf::Event *event, sf::Vector2f *worldPos)
{
    if((event->type == sf::Event::MouseButtonPressed) && (event->mouseButton.button == sf::Mouse::Left) && (button_GB.contains(worldPos->x, worldPos->y)))
    {
        return true;
    }
    else
    {
        return false;
    }
}

int Button::getWidth()
{
    return m_width;
}

int Button::getHeight()
{
    return m_height;
}
 

Le header :

#ifndef BUTTON_H
#define BUTTON_H

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

using namespace std;

class Button : public sf::Drawable
{
    public:
        Button(int width, int height, int posX, int posY, int r, int g, int b, bool shadow, std::string text);
        Button();
        ~Button();

        void setSize(int width, int height);
        void setPosition(int posX, int posY);
        void setColor(int red, int green, int blue);
        void setText(string text);
        void setShadow(bool activate);
        void setSprite(string filepath);

        int getWidth();
        int getHeight();

        bool isClicked(sf::Event *event, sf::Vector2f *worldPos);

    private:

        virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
        {
            target.draw(button_shadow, states);
            target.draw(button, states);
            target.draw(button_text, states);
        }

        int m_width = 0;
        int m_height = 0;
        int m_posX = 0;
        int m_posY = 0;
        int m_red = 0;
        int m_green = 0;
        int m_blue = 0;
        string m_text = "";
        bool m_activate = false;

        sf::RectangleShape button;
        sf::RectangleShape button_shadow;

        sf::Text button_text;

        sf::FloatRect text_GB;
        sf::FloatRect button_GB;

        sf::Font font;

        sf::Texture button_spr_texture;
};

#endif // BUTTON_H
 

Et pour appeler cette classe je fais tout simplement Button Button1; Et ensuite j'appelle les fonctions si besoin.
Et là je ne vois pas d'où peut venir le problème.

Merci d'avance.

12
Discussions générales / Re : SFML Blueprints - Un autre livre sur SFML
« le: Juillet 21, 2015, 07:01:32 pm »
Bonjour, ayant voulu commande le livre ce matin, je me suis confronté au problème du code de réduction. Il n'agi pas et je n'ai pas de réduction ...
Est ce normal ? L'opération est finie ?

13
Général / Re : Problème avec les events
« le: Mars 29, 2015, 12:12:05 pm »
Merci beaucoup, je suis vraiment désolé ^^ J'avais toujours des problèmes bidons ;)

14
Général / [Résolu]Problème avec les events
« le: Mars 29, 2015, 12:47:34 am »
Bonjour,

Je me permet de mettre un post sur le forum car j'ai un soucis avec les events.
Et le problème est donc qu'une fois que j'appuie sur le bouton de la souris il exécute les deux conditions, alors que la touche est relâchée qu'une fois alors que faire pour pallier à ce soucis ? Et éviter que les deux conditions soient appelées, car c'est pour des boutons et si j'appuie je veux pas qu'il y ai un double clic (ou rebond (je crois que c'est ça le terme)).
Merci d'avance 


Voici le code :

if((event->type == sf::Event::MouseButtonReleased) && (event->mouseButton.button == sf::Mouse::Left))
    {
        if (box_GB.contains(worldPos->x, worldPos->y) && activate == false)
        {
            activate = true;
            cout << "true" << endl;
        }
    }


    if((event->type == sf::Event::MouseButtonReleased) && (event->mouseButton.button == sf::Mouse::Left))
    {
        if (box_GB.contains(worldPos->x, worldPos->y) && activate == true)
        {
            activate = false;
            cout << "false" << endl;
        }
    }


15
Projets SFML / Re : Lord Of War [Prototype]
« le: Janvier 05, 2015, 09:41:49 pm »
Super intéressant comme jeu ;) J'ai hâte de voir la suite et y rejouer avec du nouveau contenu ;) !

Pages: [1] 2 3 ... 7 Suivante »