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

Pages: [1]
1
Général / Appliquer aussi une transformation sur un sprite
« le: Novembre 04, 2016, 11:40:21 pm »
Bonjour,
J'ai une classe qui ressemble à ceci :
lass Card : public sf::Transformable, public sf::Drawable {

private:

        virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const {
                states.transform *= getTransform();
                target.draw(_sprite, states);
        }

        sf::Sprite _sprite;
        sf::RectangleShape _border;
        sf::Texture _texture;
};

Qui me permet donc d'écrire des choses comme ceci :
Card c;
c.setPosition(200, 200);

Mon image est bien déplacer visuellement mais pas logiquement, les coordonnées de _sprite sont resté non pas bougé ce qui est normal, mais comment faire en sorte qu'avec un appel de fonction à setPosion() il bouge le sprite, et la texture sans passer par une fonction dans ma classe ?

Parce que là ça va si j'ai juste à bouger le sprite... mais si je doit aussi pouvoir le faire tourner, le redimensionné etc... ça peut être très long...

Merci de votre aide !

2
Général / Fuite mémoire avec Valgrind
« le: Août 15, 2016, 10:14:17 pm »
Bonjour,
Je test pour la première fois valgrind est celui ci me retourne ceci :
Citer
==4278==
==4278== HEAP SUMMARY:
==4278==     in use at exit: 44,011,424 bytes in 7,449 blocks
==4278==   total heap usage: 13,262 allocs, 5,813 frees, 66,806,341 bytes allocated
==4278==
==4278== LEAK SUMMARY:
==4278==    definitely lost: 688,208 bytes in 8 blocks
==4278==    indirectly lost: 0 bytes in 0 blocks
==4278==      possibly lost: 43,119,823 bytes in 7,166 blocks
==4278==    still reachable: 203,393 bytes in 275 blocks
==4278==         suppressed: 0 bytes in 0 blocks
==4278== Rerun with --leak-check=full to see details of leaked memory
==4278==
==4278== For counts of detected and suppressed errors, rerun with: -v
==4278== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Une belle perte de mémoire donc...
Ma question est, était-elle due à la SFML ou à mon code ? Avec l'option de --leak-check=full je voit qu'il y a des parties qui semble liés à mon code, mais aussi certaines avec la sfml...
Le rapport complet ici : http://pastebin.fr/47466
(le fichier était trop lourd)

Merci de votre aide !

3
Graphique / Re : std::string vers sf::Color
« le: Juin 12, 2016, 01:39:46 pm »
Okay, alors enfait c'était juste un problème d'affichage :
std::cout << unsigned(color.g) << std::endl;

4
Graphique / std::string vers sf::Color
« le: Juin 12, 2016, 01:22:47 pm »
Bonjour,
J'aimerais créer des couleurs depuis un fichier texte. Pour l'instant j'arrive à correctement récupérer le texte en code couleur donc par exemple 255 255 255 pour du blanc. Mais ensuite je veux me servir de ça pour créer une couleur sfml mais ça ne fonctionne pas... Voici mes différents essais :
// Méthode 1 : Avec la conversion en décimal
std::string s = "16777215";
std::string::size_type sz;
int c = std::stoi (s, &sz);
sf::Color color(c);
//Affichage des composante rgb :
//Affichage de la valeur décimal : 0

// Méthode 2 : Avec la conversion via les stringstream
std::string s = "255";
std::stringstream ss(s);
int r, g, b:
ss >> r;
ss >> g;
ss >> b;
sf::Color color(r, g, b);
//Affichage des composante rgb :   &#65533; &#65533;
//Affichage de la valeur décimal : 16744703

// Méthode 3 : Avec la conversion via atoi
std::string s("255");
int r = atoi(s.c_str())
int g = atoi(s.c_str())
int b = atoi(s.c_str())
sf::Color color(r, g, b);
//Affichage des composante rgb :   C &#65533;
//Affichage de la valeur décimal : 4437247

(j'ai aussi essayé le cast vers un sf::Uint8 mais sans succès...)

Voilà quelque soit la méthode utilisé les composante r, g, b ne sont jamais bonne...
Comment résoudre ce problème ?

Merci de votre aide.



5
Général / Gravité et Saut
« le: Février 17, 2015, 09:00:34 am »
Bonjour,
Je réalise un petit jeux 2D de plateforme, par conséquent il me faut une gravité afin d’attirer le joueur vers le bas et pouvoir sauter (double saut). J'ai réussi à mettre en place c'est deux éléments mais il me reste un problème :
La gravité agit tant que le joueur ne touche pas un bloc.
Lorsque le joueur touche un bloc et appuie sur espace on fait sauter le personnage. J'ai créer deux fonctions de déplacement une pour l'axe de X et une pour l'axe des Y. Voici c'elle de l'axe des Y :
void moveImpulsionJump(float timeDelta, bool collision) {
        move(0, acceleration);
        if (timeJump.getElapsedTime().asMilliseconds() > 1) {
                if (acceleration < 5 && collision == false) {
                        acceleration += getWheigth();
                }
                else if (collision == true) {
                        acceleration = 0;
                }
                timeJump.restart();
        }
}

Du coup avec ce code pour faire sauter mon personnage il suffit de mettre accélération à une valeur négative lorsque le joueur appuie sur la bar espace.
Sauf que : quand le joueur est en collision avec un plateforme, on met l'accélération à 0 afin qu'il ne passe pas à travers mais du coup il ne peux plus sauter !

Je ne voit pas comment faire autrement. Merci de votre aide.

6
Général / Re : Déplacer un sprite en fonction d'un angle
« le: Février 16, 2015, 09:04:18 am »
Oui et j'obtenais des choses bizzre lorsque l'angle était supérieur à 90. Mais entre temps on ma donné une meilleur solution, pour le déplacement en X je fait cos(angle) et en Y sin(angle). Comme ça j'obtiens mes nouvelles coordonnées de déplacement et maintenant ça fonctionne correctement !

7
Général / Déplacer un sprite en fonction d'un angle
« le: Février 16, 2015, 08:36:00 am »
Bonjour,

Je voudrais créer une fonction qui déplace un Sprite en fonction de l'angle renseigner par l'utilisateur.

Je vois le prototype de ma fonction je vois comment faire sauf pour calculer les nouvelles coordonnées.
void setImpulsion(sf::Sprite &sprite, float newAngle, float newPuissance, float newReductor)

J'avais penser à ça : sin(angle) * déplacement ce qui me donne un côté du triangle. Du coup ensuite j'addition les coordonnés en x et c'elle en y et bouge le sprite.

Cependant je ne suis pas sûr que ce soit la bonne méthode.

Merci de votre aide.

8
Graphique / Re : sf::Text qui ne s'affiche pas
« le: Février 14, 2015, 04:23:09 pm »
C'est bon, en recommencent avec peux de fonctions dans mes classes j'ai réussi, merci !

9
Graphique / Re : sf::Text qui ne s'affiche pas
« le: Février 14, 2015, 09:53:04 am »
class Entity : public sf::RenderWindow
Heu, oui ça c'était pour avant c'est supprimer.

Pour ceux qui est des fichiers alors :
Ma classe Mère Entity :
(click to show/hide)

Ma classe Enfant qui hérite de Entity : Text
(click to show/hide)

Et enfin comment je l'utilise dans la boucle principale de ma classe Game :

Text text("Mono.ttf", "salut"); // Je le déclare quelque part dans le code

void Game::draw() {
        window.clear(sf::Color::Black); // Clear the window
        text.draw(window); // On l'affiche ! Mais sa ne fonctionne pas, sa compile mais pas de texte à l'écran...
        window.display(); // Display
}

Merci. C'est assez étonnant car sur un autre projet j'avais fait la même architecture et sa fonctionner très bien. Mais c'était avec SFML 2.1 je ne sais pas si cela à un rapport.

10
Graphique / Re : sf::Text qui ne s'affiche pas
« le: Février 14, 2015, 08:39:26 am »
Bon alors, j'ai commencé mais je me heurte à un problème, j'ai du faire une bêtise dans ma fonction draw car elle ne dessine rien du tout !
// Draw an entity on the screen
void Entity::draw(sf::RenderWindow &window) {
        window.draw(sprite);
}
Header :
class Entity : public sf::RenderWindow
{
public:
        Entity();
        virtual ~Entity();
        void draw(sf::RenderWindow &window);
        void setPosition(float x, float y);
        float getPositionX() const;
        float getPositionY() const;
        float getWidth() const;
        float getHeight() const;
        void setGravity(bool gravityForce);
        bool getGravity() const;
        void setWheight(float wheightForce);
        float getWheight() const;

private:
        sf::Sprite sprite;
        bool gravity;
        float wheight;
};
C'est la classe mère de la découle ma classe Text:
class Text : public Entity
{
public:
        Text();
        Text(std::string const& path, std::string const& string);
        virtual ~Text();
        void loadFont(std::string const& path);
        void setFont(sf::Font const& newFont);
        const sf::Font* getFont() const;
        void setText(std::string const& string);
        std::string getText() const;
        void setColor(sf::Color const& color);
        sf::Color getColor() const;
        void setCharacterSize(unsigned int size);
        unsigned int getCharacterSize() const;
        void setStyle(sf::Uint32 const& style);
        sf::Uint32 getStyle() const;

private:
        sf::Font font;
        sf::Text text;
};

Je ne comprend pas ou j'ai fait mon erreur... Merci de votre aide.

11
Graphique / Re : sf::Text qui ne s'affiche pas
« le: Février 14, 2015, 07:45:24 am »
Ok, je vais faire comme ça, encore merci !

12
Graphique / Re : sf::Text qui ne s'affiche pas
« le: Février 13, 2015, 09:36:19 pm »
Arf, merci.
Du coup comment pourrais-je faire afin de créer une classe qui me permettent d'utiliser les fonctionnalité de sf::Font & sf::Text tout ceci dans une seul classe ? ça fait un moment que je test des choses sans rien trouvé de fonctionnel.
Merci encore  :)

13
Graphique / sf::Text qui ne s'affiche pas
« le: Février 13, 2015, 06:07:52 pm »
Bonjour,
J'essaye de créer une classe qui contiennent un sf::Font avec un sf::Text. Voici le code de la classe :
#include "..\inc\Text.h"

Text::Text() {
}

Text::Text(std::string fontPath, std::string textToDraw) {
        if (!font.loadFromFile(fontPath))
        {
                std::cout << "error while openning a font" << std::endl;
        }
        text.setFont(font);
        text.setString(textToDraw);
}

Text::~Text() {
}
 

Et son header :
#pragma once
#include <SFML/Graphics.hpp>
#include <iostream>

class Text : public sf::Font, public sf::Text
{
public:
        Text();
        Text(std::string fontPath, std::string textToDraw);
        virtual ~Text();

private:
        sf::Font font;
        sf::Text text;
};

Enfin j'utilise mon code comme ceci :
Text txVersion("../data/font/Mono.ttf", "");
        version = "Alpha 0.1";
        txVersion.setString(version);
        txVersion.setCharacterSize(24);
        txVersion.setColor(sf::Color::White);
Et enfin la boucle d'affichage :
window.clear(sf::Color::Black); // Clear the window
        txVersion.setPosition(10, 10);
        window.display(); // Display
Cependant mon texte n’apparaît pas...
Je pense que cela viens de ma classe Text, à un moment je pense que la sf::Font ou sf::Text est supprimé de la mémoire mais je n'arrive pas à voir ou ...

Merci de votre aide.

Pages: [1]
anything