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

Pages: [1]
1
Général / Re : Problème avec sf::Time
« le: Janvier 23, 2017, 09:32:05 pm »
En faite je n'ai aucune erreur, j'ai juste mit un zéro en trop au temps d'attente minimum x)
Merci quand même ^^"

2
Général / Re : Problème avec sf::Time
« le: Janvier 23, 2017, 09:23:01 pm »
J'ai lancer mon programme en mode debug et aucune erreurs, je n'ai pas encore plus approfondi le debugging mais je voulais juste savoir si j'utilisais bien sf::Time mais apparemment le problème ne vient pas de là ?
Je vais voir ça et je re-viendrai vers vous si jamais je n'ai toujours pas trouvé de solution ;)
Merci pour ta réponse :)

3
Général / [Résolu] Problème avec sf::Time
« le: Janvier 23, 2017, 06:37:58 pm »
Bonjour à tous ^^, je code un petit shoot'em up et j'ai un problème pour la génération de nouveaux astéroïdes.
Mon code n'en génère tout simplement pas :/

Voici le code où est gérer cette partie ( plus tard il ne seras plus dans cette méthode car ce n'est pas ce qu'est censé faire la méthode actuel, mais je test ici pour le moment )

void CometSystem::update()
{
    for( size_t i{0}; i < cs_comets.size(); i++ )
        cs_comets[i].updatePosition();

    if( cs_comets.size() < cs_par_cometLimit )
    {
        if(cs_gen_next_set)
            if( cs_clk.getElapsedTime() > cs_gen_spawn_next )
            {
                add(1);
                cs_gen_spawn_next = tl::randomTime(cs_gen_spawn_min, cs_gen_spawn_max);
                cs_clk.restart();
            }
        else
        {
            cs_gen_spawn_next = tl::randomTime(cs_gen_spawn_min, cs_gen_spawn_max);
            cs_gen_next_set = true;
        }
    }
}
 

La méthode update est appelé toute les millisecondes

cs_comets                 : vecteur où sont stocké les comets(astéroïdes) : type std::vector<Comet>
cs_par_Limit              : limite de comets dans le jeu : type unsigned short
cs_gen_spawn_min   : temps minimum avant l'apparition d'une nouvelle comet : type mutable sf::Time
cs_gen_spawn_max  : temps maximum avant l'apparition d'une nouvelle comet : type mutable sf::Time
cs_gen_spawn_next  : temps avant l'apparition d'une nouvelle comet : type sf::Time
cs_gen_next_set       : booléen qui défini si un temps avant la prochaine apparition d'une comets à été définit ( false dès la construction de l'objet puis toujours true car reset automatique de cs_gen_spawn_next )

randomTime permet, comme sont nom l'indique, de récupérer un temps aléatoire entre une certaine intervalle
add(1) permet d'ajouter une comet

Code de tl::randomTime
sf::Time tl::randomTime( sf::Time const &min, sf::Time const &max )
{
    std::uniform_int_distribution<> dist(min.asMilliseconds(), max.asMilliseconds());
    sf::Time time(sf::milliseconds(dist(rEngin)));
    return time;
}
 

Initialisation des variables

cs.setLimit(20);
...
cs.setSpawnTime(sf::seconds(5), sf::seconds(10)); // cs = CometSystem
.../...
void CometSystem::setSpawnTime( sf::Time const &min, sf::Time const &max )
{
    cs_gen_spawn_max = max;
    cs_gen_spawn_min = min;
}

 

Je pense que je ne sais pas du tout utiliser sf::Time, j'ai beau regarder la doc, un truc doit m'échapper :/
Une idée de ce qui ne vas pas ?

Je vous remercie :)

Edit :
Ou alors le problème vient de la clock mais je crois qu'elle a un thread dédié non ?

4
Graphique / Re : Passage de sf::Texture
« le: Janvier 10, 2017, 07:36:14 pm »
Après relecture de mon code j'ai compris que il suffisait de mettre b_texture tout court, mais je n'avais pas remarqué le sf::Points au lieu de sf::Quads x). Je te remercie :)

5
Graphique / Re : Passage de sf::Texture
« le: Janvier 10, 2017, 05:05:58 pm »
Et donc j'ai aussi essayer ce qui me paraissais le plus logique en faisant &*b_texture, mais rien ne s'affiche

6
Graphique / Passage de sf::Texture
« le: Janvier 10, 2017, 05:04:04 pm »
Bonjour, je souhaiteras charger une texture via un manager puis donner l'adresse de cette texture au boutons que va gérer mon manager aussi. Le problème c'est que je ne vois pas du tout comment faire !
J'ai déjà fait ça
class Button : public sf::Drawable, public sf::Transformable
{

public:

    Button( sf::Texture *texture ) : b_array(sf::Points, 4)
    {
        b_texture = texture;
        unsigned int x{texture->getSize().x};
        unsigned int y{texture->getSize().y};

        b_array[0].position = sf::Vector2f(0,0);
        b_array[1].position = sf::Vector2f(x,0);
        b_array[2].position = sf::Vector2f(x,y);
        b_array[3].position = sf::Vector2f(0,y);

        b_array[0].texCoords = sf::Vector2f(0,0);
        b_array[1].texCoords = sf::Vector2f(x,0);
        b_array[2].texCoords = sf::Vector2f(x,y);
        b_array[3].texCoords = sf::Vector2f(0,y);
    }

private:

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

    sf::Texture *b_texture;
    sf::VertexArray b_array;

};

int main()
{

    sf::Texture t;
    if(!t.loadFromFile("C:/Test/f.png"))
        std::cout << "Erreur";

    Button b(&t);

    sf::RenderWindow window;
    window.create(sf::VideoMode(640,480), "Test", sf::Style::Default);

    while(window.isOpen())
    {
        window.clear();
        window.draw(b);
        window.display();
    }

   return 0;
}
 

Mais j'obtiens l'erreur suivante :

In member function 'virtual void Button::draw(sf::RenderTarget&, sf::RenderStates) const':|
error: cannot convert 'sf::Texture* const*' to 'const sf::Texture*' in assignment|

 

J'ai du mal à comprendre l'erreur mais je pense bien qu'il ne faut pas faire &b_texture. Pouvez vous m'aider svp ?

7
Général / Problème de linkage ?
« le: Juillet 17, 2016, 11:48:40 pm »
Bonjour à tous, j'ai un petit problème avec mon projet. A l'exécution de mon programme j'ai ce message qui s'affiche :
"Le point d'entrée de procédure -ZN2sf11SounfBuffer12loadFromFileERKNSt7_cxx1112basic_stringlcSt11char_traitslcESalcEEE est introuvable dans la bibliothèque de liens dynamiques B:..\AryaStys.exe"
Ce qui est bizarre car j'ai configuré mon projet en static.
- Mon IDE est codeblock
- Je travail avec la norme 2014 de c++
- J'utilise minGw dernière version
- J'utilise SFML dernière version
j'ai mit ces dépendance ( dans l'ordre ) :
gdi32
opengl32
openal32
winmm
flac
vorbisenc
vorbisfile
vorbis
ogg
freetype
jpeg
sfml-graphics-s
sfml-audio-s
sfml-window-s
sfml-system-s

J'ai utiliser cmake pour compiler la SFML
J'ai vraiment besoin de votre aide ^^"

EDIT : Enfaite je me suis juste tromper en configurant Cmake
Mais il me reste une seul erreur : :0|5|error: ISO C++11 requires whitespace after the macro name [-Werror]|
Cela vient de la define SFML_STATIC et là du coup je vois pas trop quoi faire x) need help :)

8
Général / Barre de vie mal placé ?
« le: Mars 07, 2016, 01:08:35 pm »
Bonjour à tous ! je code actuellement un petit jeu type rpg. Je l'ai fini mais j'ai voulu ajouter une barre de vie qui apparaît sous les monstres. Sauf que ma barre n'est pas bien centré et je ne vois pas pourquoi ^^" voici un code minimaliste pour faire fonctionner la barre :
#include <iostream>
#include <vector>
#include <SFML/Graphics.hpp>
#include <windows.h>

using std::string;
using std::cout;
using std::endl;
using std::vector;

sf::Vector2f operator-( sf::Vector2f v_f, float const &i ){ v_f.x -= i;v_f.y -= i;return v_f;}
sf::Vector2f operator/( sf::Vector2f v_f, float const &i ){ v_f.x /= i;v_f.y /= i;return v_f;}
sf::Vector2f operator+( sf::Vector2f v_f, float const &i ){ v_f.x += i;v_f.y += i;return v_f;}

class LifeBar : public sf::Drawable, public sf::Transformable
{
public:
    LifeBar( sf::Vector2f position, sf::Vector2f size, float life ) : _max_status_size{ size.y - 2.0f }, _max_life{life}, _life{life}
    {
        _rect.setSize(size);
        _rect.setFillColor( sf::Color( 0, 0, 0, 0 ) );
        _rect.setOutlineThickness(1);
        _rect.setOutlineColor(sf::Color::Black);
        _rect.setPosition(position);

        _status.setSize( size - 2.0f );
        _status.setFillColor( sf::Color( 0, 255, 0, 200 ) );
        _status.setPosition( position + 1 );
    }

    void lifeDamage( float const damage )
    {
        if( damage < _life )
            _life -= damage;
        else
            _life = 0;
        if( _life > _max_life )
            _life = _max_life;
        _status.setSize( sf::Vector2f( _status.getSize().x, _life * _max_status_size / _max_life ) );
        _status.setFillColor( sf::Color( (_life * 255 / _max_life ) * -1, _life * 255 / _max_life, 0, 200 ) );
    }

    sf::Vector2f getSize() const
    {
        return _rect.getSize();
    }

private:

    float const _max_status_size;
    sf::RectangleShape _rect;
    sf::RectangleShape _status;
    float const _max_life;
    float _life;
    virtual void draw( sf::RenderTarget& target, sf::RenderStates states ) const
    {
        states.transform *= getTransform();
        target.draw( _rect, states );
        target.draw( _status, states );
    }
};

int main(void)
{
    bool inApp{true};
    unsigned int countOfClick{0};
    sf::RenderWindow window;
    sf::ContextSettings conSettings;
    conSettings.antialiasingLevel = 4;
    window.create( sf::VideoMode( 800, 600 ), "Test", sf::Style::Default, conSettings );

    LifeBar lb( sf::Vector2f(50,50), sf::Vector2f(50,500), 100 );
    lb.setOrigin( lb.getSize() / 2);
    lb.rotate(270);
    lb.setPosition(sf::Vector2f( static_cast<float>( window.getSize().x / 2 ), static_cast<float>( window.getSize().y / 2 ) ) );
    sf::Clock clk;
    while( inApp )
    {
        while( window.isOpen() )
        {
            sf::Event event;
            while( window.pollEvent( event ) )
            {
                if( event.type == event.Closed )
                    window.close();
                if( event.type == event.MouseButtonPressed )
                {
                    if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) )
                    {
                        system("cls");
                        cout << "Nombre de cliques : " << countOfClick++;
                    }
                }
            }
            window.clear(sf::Color::White);
            window.draw(lb);
            window.display();
            while( clk.getElapsedTime().asMicroseconds() < 1000 )
            {

            }
            clk.restart();
            lb.lifeDamage(0.01);
        }
    }
}

 

Merci de bien vouloir m'aider ;)

9
Général / Re : Souci entre thread
« le: Mars 07, 2016, 01:01:18 pm »
Pourquoi faire du multithreading quand tu n'en n'as pas besoin ?

10
Graphique / Re : Ombre
« le: Mars 07, 2016, 12:58:25 pm »
OpenGl est ton ami :) ou sinon ouai les shaders

11
Graphique / Undefined reference
« le: Mars 07, 2016, 12:06:30 pm »
Bonjour, j'ai installé la SFML version 2.3.2 pour GCC 4.8.1 TDM (SJLJ) - 32-bit. J'utilise CodeBlock comme IDE avec TDM-GCC-32 version 5.1.
J'ai bien linker lib et include et j'ai bel et bien mit :
-sfml-graphics
-sfml-window
-sfml-system
Tout fonctionne sauf quand je veux charger une texture, le code suivant
sf::Texture t;
t.loadFromFile("Monster.png");
 
me donne l'erreur ci-dessous :
undefined reference to `sf::Texture::loadFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, sf::Rect<int> const&)'|
Quelqu'un sais comment régler ce problème ?
Merci ^^

Pages: [1]