Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML]Robienie określonych czynności co określony termin czasu

Ostatnio zmodyfikowano 2014-10-26 21:09
Autor Wiadomość
mcjulcz
Temat założony przez niniejszego użytkownika
[SFML]Robienie określonych czynności co określony termin czasu
» 2014-10-26 18:50:39
Witam!Chciałem napisać snake'a ale potrzebowałem funkcji,który by odliczała czas nie zatrzymując programu.Znalazłem więc sf::Clock i sf::Time,ale nie umiem za pomocą ich sprawić,żeby jakaś czynność(np: ruch węża) wykonywała się co określoną ilość czasu(np: 1 sekundę).Więc mam prośbę.Jest jakiś szablon,który pozwala coś takiego zrobić?Chodzi o coś typu:
sf::Clock;
if(jakieś warunki)
{
rzeczy do zrobienia;
}
Pomożecie mi?Bo zatrzymałem się na pewnym etapie i nie mogę nic zrobić :(.
P-119469
Winner_Of_Death
» 2014-10-26 19:23:04
C/C++
sf::Clock zegar;

//...

if( zegar.getElapsedTime().asSeconds() == 1 )
{
    //Reszta kodu
    zegar.restart();
}
Coś takiego ?
P-119472
mcjulcz
Temat założony przez niniejszego użytkownika
» 2014-10-26 19:28:14
Dzięki za pomoc,ale jak na miejscu "//reszta kodu" wpisuje np: cout<<"a"<<endl; to nic nie wypisuje...Chodziło o to,żeby robiło coś co sekundę,a to nic nie robi...Pomożecie?
PS: Jak zrobić taką ramkę z kodem?
P-119473
Parapet
» 2014-10-26 20:14:39
Pokaż więcej kodu (też jak to wywołujesz).
P-119482
Winner_Of_Death
» 2014-10-26 20:15:12
Ale Ty chcesz ten program robić w konsoli, czy w oknie w bibliotece SFML ?
P-119483
mcjulcz
Temat założony przez niniejszego użytkownika
» 2014-10-26 20:23:36

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <iostream>

using namespace std;
using namespace sf;


Clock zegar;

int main()
{
    RectangleShape kierunek(Vector2f(16,16));

    RenderWindow window(sf::VideoMode(800, 600), "Snake");

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        kierunek.setFillColor(Color::Red);

        if( zegar.getElapsedTime().asSeconds() == 1 )
        {
            cout<<"up"<<endl;
            zegar.restart();
        }

        window.clear();

        window.draw(kierunek);

        window.display();
    }
}
Chodziło mi,żeby wypisywało komunikaty o ruchu w konsoli i poruszało wężem jednocześnie,dlatego dałem cout<<"up"<<endl; .Ale nic nie wypisuje :(
PS: Znalazłem na innej stronce jak robić ramki z kodem :)
P-119484
pekfos
» 2014-10-26 20:59:21
if( zegar.getElapsedTime().asSeconds() == 1 )
C/C++
if( zegar.getElapsedTime().asSeconds() >= 1 )
P-119489
mcjulcz
Temat założony przez niniejszego użytkownika
» 2014-10-26 21:09:19
Dzięki za pomoc :D.Wszystko działa :)
P-119491
« 1 »
  Strona 1 z 1