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

Pages: [1]
1
Général / Re : Demande d' "expertise" sur système de particules
« le: Novembre 04, 2014, 11:10:01 pm »
Bonsoir,

Merci beaucoup pour votre réponse rapide, et milles mercis pour vos conseils !

J'essaierai de les suivre à la lettre et d'améliorer mon code autant que faire se peut.

Merci encore.

Cordialement.

NB: Autant pour moi, merci d'avoir modifié le nom de mon topic.

2
Général / Demande d' "expertise" sur système de particules
« le: Novembre 04, 2014, 10:49:54 pm »
Bonsoir,

Je me suis récemment mis à programmer en C++ en utilisant la librairie SFML (qui m'a l'air tout bonnement géniale) et étant un fasciné de générateurs de particules, j'ai essayé d'en créer un de manière très basique et très simple.

Ma demande est simple : J'aimerai savoir si je pourrai améliorer ma façon de coder, si je pouvais optimiser certaines choses dans ce code, et pourquoi pas apprendre de nouvelles choses qui réduiraient le nombre de lignes à écrire.

Voici mon code :
#include <SFML/Graphics.hpp>
#include <time.h>
#include <vector>
#include <iostream>

int main()
{
    srand(time(NULL));

    sf::RenderWindow app(sf::VideoMode(800, 600), "SFML window");
    app.setVerticalSyncEnabled(true);
    app.setMouseCursorVisible(false);

    struct Particule
    {
        float vx,vy,g;
        int vie ;
        sf::CircleShape shape;
        Particule(int x, int y) {
                                     shape.setFillColor(sf::Color::White);
                                     shape.setRadius(7.0);
                                     shape.setPosition(x,y);
                                     g = 0.1; vy = -1.0; vx = (float)rand() / RAND_MAX; vie = 127;
                                    }
        void update() { vy += g; --vie; shape.setFillColor(sf::Color(255,255,255,vie)); shape.move(vx,vy);  }
        bool isAlive() { return vie >= 0; }
    };

  typedef struct Particule Particule;

  std::vector<Particule> Tableau;

  sf::Vector2i MousePos;

    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                app.close();
            if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
                app.close();
        }

        app.clear(sf::Color::Black);
       
        MousePos = sf::Mouse::getPosition(app);
        Particule p(MousePos.x,MousePos.y);
        Tableau.push_back(p);

        for(int i = Tableau.size()-1 ; i > 0; i--)
        {
            if(Tableau[i].isAlive()) {Tableau[i].update(); app.draw(Tableau[i].shape); }
            else if(Tableau[i].isAlive() == false) Tableau.erase(Tableau.begin()+i);
        }
        app.display();

    }

    return EXIT_SUCCESS;
}
 

Voilà c'est tout simple :)

Merci par avance à ceux qui pourront me conseiller, me donner des idées, et surtout m'aider à m'améliorer.

Cordialement.

Pages: [1]