[Allegro] Powtarzanie cykliczne, biblioteczka <time.h>
Ostatnio zmodyfikowano 2009-01-13 23:23
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.
|
|
lynx |
» 2009-01-13 18:51:32 |
|
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. |
|
DejaVu |
» 2009-01-13 21:12:58 Funkcja Allegro: rest(czas) Funkcja WinAPI: Sleep(czas) czas - ilość milisekund 'przerwy'
|
|
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 :/ |
|
snake_yaro |
» 2009-01-13 23:15:26 Arrogance, skorzystaj z tego: Klik! |
|
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ć 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ą int czas = 0; while( speed > 0 ) { 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 void ruch() { czas = 0; if( czas == 10 ) { }; };
Mam nadzieję, że Ci to pomoże :) |
|
« 1 » |