driver1995 Temat założony przez niniejszego użytkownika |
[allegro] czas » 2009-05-04 19:48:51 Witam... Mam kolejny już problem z allegro... A mianowicie chcę, aby np. włączam program, pokazuje się obrazek i zaczyna grać muza (np) i po np. 30 sec obrazek się zmienia... (np,np,np ;P;P;P) Próbowałem z biblioteką <time.h>, ale coś mi nie wychodzi ;/ Może w allegro ta biblioteka nie chodzi? Proszę o pomoc. pzdr... |
|
GoldWolf |
» 2009-05-04 20:03:46 A mógłbyś wrzucić ten kawałek kodu o którym mówisz, ja ci nie pomogę bo akurat w allegro nie pisze, ale innym chcącym ci pomóc na pewno będzie łatwiej. |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-04 20:14:45 void intro() { time_t start, koniec; double roznica; time( & start ); time( & koniec ); roznica = difftime( koniec, start ); double aa = 31 - roznica; rest( aa ); } To jest tylko jedna z moich prób (ta którą zapisałem)... Jeszcze próbowałem na parę sposobów, ale nawet jakbym chciał je napisać to mógłby być problem, bo ich nie pamiętam ;/ ;/ ;/ |
|
GoldWolf |
» 2009-05-04 20:17:57 TO wystarczy tak jest łatwiej, bo wiadomo jak się za to zabierałeś. Teraz tylko trzeba cierpliwie poczekać na odpowiednią osobę, która coś będzie umiała poradzić. |
|
WunM |
» 2009-05-04 20:23:45 Jak umieściłeś to w Allegrowym timerze to się nie dziw ;)
Jak korzystasz z timera to korzystaj z jednego. |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-04 20:28:46 No dobra... Miałem drugi timer... No i usunąłem go i... Dalej nie działa ;/ ;/ ;/ |
|
WunM |
» 2009-05-04 20:36:52 No dobra... Miałem drugi timer... No i usunąłem go i... Dalej nie działa ;/ ;/ ;/ Nie o to chodzi. Zapewne miałeś taką kombinację: while( speed > 0 ) { intro(); }
Widzisz, timer (while(speed > 0)) działa (w zależności od szybkości jaką ustawiłeś) ileś razy na sekundę. Za każdym tym razem wszystko (co jest w pętli) leci od nowa. Twoja funkcja jest tak skonstruowana że za każdym wywołaniem pobiera aktualny czas. To powoduje że prawie nigdy nie dojdzie do takiej sytuacji że minie te 30 sekund. Problem przedstawiony teraz możliwe rozwiązania ;) Ustaw timer np. na 100 (szybkość). Stwórz zmienną float a w pętli dodawaj do niej wartość 0.01 jeśli wartość wynosi 30 zmień obrazek a wartośc ustaw na 0. //inne rozwiązania po przerwie.... |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-04 20:40:04 Nie... Dokładnie mój "main" wygląda tak: int main() { allegro_init(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0 ); install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" ); set_volume( 255, 255 ); intro(); clear_to_color( screen, makecol( 0, 0, 0 ) ); adjust_sample( behemoth, 60, 127, 1000, 1 ); rest( 2000 ); stop_sample( behemoth ); destroy_bitmap( CrazyRace ); destroy_bitmap( KG ); allegro_exit(); return 0; } END_OF_MAIN(); ale spróbuję ten sposób z floatem ;) //edit: Ten sposób nie przejdzie, bo tam gdzie było w funkcji intro() "coś tam" to jest dość sporo bitmap do wczytania i jest lekkie opóźnienie, a ja bym chciał, żeby na dany moment piosenki coś się pojawiło .. ;/ ;/ ;/ |
|
« 1 » 2 |