palkoul Temat założony przez niniejszego użytkownika |
[Allegro5] Timery a poruszanie ludzikiem po mapie kafelkowej » 2012-03-17 21:55:05 Witam wszystkich serdecznie. Jako, że to mój pierwszy temat nie chcę wyjść na idiotę ale raczej to nie uniknione :] Mam taki problem, od jakiegoś czasu (2 tygodnie) męczę się w grze z timerem, który poruszałby by moją postacią co jakiś czas. Poruszanie wygląda tak: for(; tym_kamera_x > bohater.map_x / 20; ) { for( int i = 0; i < 20; ++i ) { bohater.map_x; } ++bohater.x; } bohater.map_x to x wyswietlania mojej postaci na mapie, dodaje dwadzieścia razy, ponieważ kafelki mają taką szerokość i wysokość (bohater.x to nic waznego - do rysowania innych rzeczy wzgledem postaci, inaczej mowiac bohater.x = bohater.map_x/20). Chciałbym by postać szła co jeden pixel 20 razy (jedno pole) i tyle tych pól dopóki nie będzie tam gdzie kliknąłem (tym_kamera_x). Pomożecie jakoś? Co do timerów, próbowałem wszystkiego. |
|
MrDevilsh |
RE » 2012-03-18 07:32:13 A gdybyś dał tak: for(; tym_kamera_x > bohater.map_x / 20; ) { for( int i = 0; i < 20; ++i ) { bohater.map_x++; } ++bohater.x; }
Jeśli ma się cokolwiek poruszyć, chyba jakieś dodawanie musi być. |
|
palkoul Temat założony przez niniejszego użytkownika |
Re » 2012-03-18 11:02:13 Przepraszam, mój błąd, Oczywiście tam było z plusami (miałem funkcję Porusz_Prawo(bohater); tylko źle przepisałem). Ogółem chodzi mi o to, że jak mam zastosować timery by nie szedł tak szybko, że nawet tego nie widzę. |
|
MrDevilsh |
RE » 2012-03-18 17:39:44 W Allegro4 można było ustawić sobie parę timerów i każdego do innej czynności używać. Nie powiem ci jak to jest w Allegro5 bo nie bawiłem się tym jeszcze, ale to na pewno będzie działać na tej samej zasadzie. Jak się mylę, niech mnie ktoś poprawi, może jest jakiś inny sposób o którym nie słyszałem. |
|
palkoul Temat założony przez niniejszego użytkownika |
RE » 2012-03-18 17:46:47 Hmmm no w allegro4 było takie coś, lecz allegro5 sam nie wiem. Piszę grę z samej dokumentacji i jakoś idzie. Wiem jak inaczej opisać mój problem. Nie mam idei jak zrobić, by dana czynność była robiona co jakiś czas, nie zatrzymując innych czynności gry (chyba o to mi chodzi :D ewentualnie bez tej drugiej opcji) i nie chodzi mi o al_rest(); |
|
akwes |
» 2012-03-18 17:56:38 yyyy..... Robisz timer, który uderza raz na 1/60 sekundy. first++; if( first == 30 ) { wykonaj; first = 0; } secound++; if( secound == 55 ) { wykonaj; secound = 0; }
Pierwsza czynność wykona się raz na pół sekundy, druga trochę częściej niż raz na sekundę. Przy tym się nie blokują nawzajem. Jeden timer, który jest wspólny dla wszystkich liczących czas ;> |
|
palkoul Temat założony przez niniejszego użytkownika |
RE » 2012-03-18 22:43:50 Okej, udało mi się zrobić :] dziękuje za pomoc. |
|
« 1 » |