Bonjour.
J'essaie de me mettre à la SFML depuis peu.
Ce que je veux faire c'est afficher un cercle (pour faire un bouton plus tard) à partir d'une classe Bouton.
J'ai commencé un mini bout de code mais quand je compile j'ai un écran noir.
Je vous donne le code.
Main.cpp:
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "Bouton.h"
int main()
{
sf::VideoMode videoMode(400, 300);
sf::RenderWindow window(videoMode, "Bonjour le monde !");
while (window.isOpen())
{
sf::Event event;
Bouton bouton1; //<-- je crée mon bouton
while (window.pollEvent(event))
{
if (event.type == sf::Event::EventType::Closed)
window.close();
}
window.clear();
bouton1.afficher(window); //<-- J'affiche le bouton (qui est un cercle)
window.display();
}
return 0;
}
Bouton.h
#ifndef BOUTON_H
#define BOUTON_H
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
class Bouton
{
public:
Bouton();
void afficher(sf::RenderTarget& target);
private:
sf::CircleShape cercle;
};
#endif // BOUTON_H
Bouton.cpp:
#include "Bouton.h"
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
Bouton::Bouton()
{
sf::CircleShape cercle(20);
cercle.setPosition(sf::Vector2f(50, 130));
cercle.setFillColor(sf::Color::Green);
}
void Bouton::afficher(sf::RenderTarget &target)
{
target.draw(cercle);
}
Tu crées un 2eme cercle appelé "cercle" localement dans ton constructeur au lieu d'utiliser ta donnée membre aussi appelée "cercle".
Initialise ta donnée membre "cercle" dans la liste d'initialisation de ton constructeur.
Bouton::Bouton() : cercle(20)
{
cercle.setPosition(sf::Vector2f(50, 130));
cercle.setFillColor(sf::Color::Green);
}
I have tried and it's work. Thanks.
basket random (https://basketrandom.io)