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

[Allegro] Powtarzanie cykliczne, biblioteczka <time.h>

Ostatnio zmodyfikowano 2009-01-13 23:23
Autor Wiadomość
Arrogance
Temat założony przez niniejszego użytkownika
[Allegro] Powtarzanie cykliczne, biblioteczka <time.h>
» 2009-01-13 18:37:12
Witam,
mam problem, chce aby program powtarzał pewną czynność w takich samych odstępach czasu, a dokładniej chodzi o wykorzystanie tego do allegro, np. klocek przesuwający się o dana ilość pixeli na sekundę (mikrosekundę). chciałem użyć funkcji clock(), ale ona liczy czas od rozpoczęcia działania programu, a mi chodziłoby o coś podobnego tylko liczącego czas od wskazanego momentu.
P-3652
lynx
» 2009-01-13 18:51:32
Przeczytaj to - powinno Ci pomóc. :)
P-3653
Arrogance
Temat założony przez niniejszego użytkownika
» 2009-01-13 19:05:55
No niestety, nie pomogło :/

Chyba powinienem zaznaczyć że piszę w C, a co do problemu to chodzi mi o zdarzenie, kiedy klikam myszką na ekranie i przedmiot płynnie się tam przesuwa. Zrobiłem pętle for (), ale nie wiem jak spowolnić każdy jej cykl i w rezultacie przedmiot przemierza całą drogę w ułamku sekundy, kiedy chciałbym żeby to zajeło np. 3s.
P-3654
DejaVu
» 2009-01-13 21:12:58
Funkcja Allegro: rest(czas)
Funkcja WinAPI: Sleep(czas)
czas - ilość milisekund 'przerwy'
P-3656
Arrogance
Temat założony przez niniejszego użytkownika
» 2009-01-13 22:43:00
no własnie to nie takie proste :/ jak dawałem sleep (); i dodawałem biblioteczkę windows.h to mi jakieś dziwne błędy wyskakiwały, a jak używam rest (); to mi cały program się zatrzymuje :/
P-3657
snake_yaro
» 2009-01-13 23:15:26
Arrogance, skorzystaj z tego:

Klik!
P-3659
Patzick
» 2009-01-13 23:23:35
jeżeli masz projekt allegro to nic dziwnego, że Ci wyskakiwały dziwne błędy. Chcąc połączyć windows.h z allegro musisz dołączyć
C/C++
#include <winalleg.h>
poza tym funkcja rest jest właśnie po to, aby zatrzymać działanie całego programu

Ja bym poradził tak:
w twojej pętelce gdzie masz np ustawioną szybkość wyświetlania grafiki (może być inna, która działa cały czas) dodaj sobie zmienną
C/C++
int czas = 0; //to przed pętelką
while( speed > 0 )
{
    //kod animacji itp
   
    czas++;
    if( czas > 10 ) { frame = 0 };
};
możesz sobie dowolnie zmienić wartość warunku if dzięki czemu ustawisz sobie najodpowiedniejszy czas.
Musisz jeszcze zrobić funkcję w stylu
C/C++
void ruch() {
    czas = 0;
    if( czas == 10 ) {
        //wykonaj ruch
    };
};
Mam nadzieję, że Ci to pomoże :)
P-3660
« 1 »
  Strona 1 z 1