Bonjour tout le monde,
J'ai enfin réussi à installer SFML (mais ça a été dur), et j'ai découvert avec consternation que pour trouver un bon tuto complet sur SFML c'est coton. Donc j'ai commencé à essayer de comprendre comment marchait l'exemple de pong et essayé de bidouiller un peu, sauf que là, gros freeze dès que je touche à quelque chose!
Je sais que c'est dans les règles du forum de pas faire des messages trop longs mais là je vois vraiment pas où est l'erreur donc je vous met tout le code, désolé
#include <SFML/Graphics.hpp>
#include <iostream>
#define NEXTTOMENU (selecter.getPosition().y == 20.f) || (selecter.getPosition().y == 50.f) || (selecter.getPosition().y == 100)
int main()
{
//Declare variables
int frames = 0;
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
std::vector<sf::CircleShape> pos(3);
std::vector<sf::RectangleShape> txt(3);
pos[0].setPosition(30,20);
pos[1].setPosition(30,50);
pos[2].setPosition(30,100);
for(int i=0;i<3;i++)
{
pos[i].setRadius(2);
pos[i].setFillColor(sf::Color(200,200,100));
txt[i].setSize(sf::Vector2f(100,25));
txt[i].setFillColor(sf::Color(100,100,200));
txt[i].setPosition(pos[i].getPosition().x +5, pos[i].getPosition().y);
}
sf::RectangleShape selecter;
selecter.setSize(sf::Vector2f(30,30));
selecter.setPosition(pos[1].getPosition().x -10.f,pos[1].getPosition().y);
sf::Clock clock;
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
//Here we go!
short menuSelected=1;
float deltaTime = clock.restart().asSeconds();
const float selecterSpeed = 400.f;
//If the selecter is next to a menu
if(NEXTTOMENU)
{
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && (menuSelected != 0) )
{
while((selecter.getPosition().y != 50.f)||(selecter.getPosition().y != 20.f))
{
selecter.move(0.f, -selecterSpeed * deltaTime);
}
menuSelected--;
std::cout << "pressin'up\n";
std:: cout << "menuselected= " << menuSelected;
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && (menuSelected != 2))
{
while((selecter.getPosition().y != 50.f)||(selecter.getPosition().y != 100.f))
{
selecter.move(0.f, selecterSpeed * deltaTime);
}
menuSelected++;
std::cout << "Pressin'down\n";
std::cout << "menuselected= " << menuSelected;
}
}
window.clear(sf::Color(50, 200, 50));
for(int i=0;i<3;i++)
{
window.draw(pos[i]);
window.draw(txt[i]);
}
window.draw(selecter);
window.display();
frames++;
std::cout << "Displayed " << frames << std::endl;
}
return EXIT_SUCCESS;
}
La console affiche le nombre de frames correctement jusqu'à ce que j'appuie sur haut ou bas, où tout s'arrete..
Merci pour vos réponses..