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

[SFML 2.0]Stoper

Ostatnio zmodyfikowano 2014-05-17 23:06
Autor Wiadomość
GGG205
Temat założony przez niniejszego użytkownika
[SFML 2.0]Stoper
» 2014-05-15 21:57:19
Cześć! Napisałem coś do odliczania czasu, ale nie działa jak trzeba. Dla argumentu w funkcji podałem 6(w sekundach liczy). Liczy do 6 i wykonuje akcje, ale potem nie resetuje się.

C/C++
bool Game::Timer( float time )
{
    timer = clock.getElapsedTime();
    std::cout << timer.asSeconds() << std::endl;
    if( timer.asSeconds() >= time )
    {
        return true;
        clock.restart();
    }
    else return false;
   
   
   
    return false;
}

A tutaj część kodu, gdzie wykorzystuję funkcje Timer:

C/C++
case RANDOM_MOVE:

if( cDown.Timer( 6 ) == true )
{
    int process =( rand() % 2 ) + 1;
    if( process == 1 )
         DIR = static_cast < DIRECTIONS >( rand() % 4 );
    else
    {
        if( DIR == LEFT )
             velocity.x -= 1;
        else if( DIR == RIGHT )
             velocity.x += 1;
        else if( DIR == UP )
             velocity.y -= 1;
        else if( DIR == DOWN )
             velocity.y += 1;
       
    }
   
}
break;
P-110065
colorgreen19
» 2014-05-15 22:00:28
clock.restart()
 przenieś nad
return true;
P-110067
pekfos
» 2014-05-15 22:02:06
C/C++
return true;
clock.restart();
Kolejność..
P-110068
GGG205
Temat założony przez niniejszego użytkownika
» 2014-05-15 22:20:35
Niestety nie. Jakieś inne propozycje ?
P-110079
pekfos
» 2014-05-15 22:22:40
Niestety nie.
Kod..?
P-110081
GGG205
Temat założony przez niniejszego użytkownika
» 2014-05-15 22:55:08
Jeśli chodzi o main to:
C/C++
int main()
{
   
    RenderWindow Window( VideoMode( 640, 420, 32 ), "Spartan" );
   
    Event zdarzenie;
   
    Game gra;
   
   
    Character test( "Admin", "Admin.png", 0, 0, 100, Character::NEUTRAL );
    //Hero test2("Admin","Admin.png",0,0,100,Character::NEUTRAL);
    float time;
    Clock Timer;
   
   
    while( Window.isOpen() )
    {
       
        time = Timer.getElapsedTime().asSeconds();
        Timer.restart();
       
        while( Window.pollEvent( zdarzenie ) )
        {
            switch( zdarzenie.type )
            {
            case Event::Closed: Window.close(); break;
            }
        }
       
        Window.clear( Color::Blue );
       
        test.move( time, Character::RANDOM_MOVE, gra );
        test.draw( Window );
       
        Window.display();
    }
    return 0;
}
P-110082
pekfos
» 2014-05-15 23:45:21
A jak teraz wygląda Game::Timer()?
P-110086
GGG205
Temat założony przez niniejszego użytkownika
» 2014-05-16 14:01:41
Zmieniłem kolejność. A na samą górę nie dam bo mam dziwne znaki coś typu -2e.0 i coś tam dalej było. I te znaki nie rozwiązują mojego problemu bo nawet nie było by widać, że to coś odlicza.

C/C++
bool Game::Timer( float time )
{
    timer = clock.getElapsedTime();
    std::cout << timer.asSeconds() << std::endl;
    if( timer.asSeconds() >= time )
    {
        clock.restart();
        return true;
    }
    else return false;
   
   
   
    return false;
}
P-110108
« 1 » 2
  Strona 1 z 2 Następna strona