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.