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

[Allegro5] Timery a poruszanie ludzikiem po mapie kafelkowej

Ostatnio zmodyfikowano 2012-03-18 22:43
Autor Wiadomość
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:
C/C++
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.
P-52806
MrDevilsh
RE
» 2012-03-18 07:32:13
A gdybyś dał tak:

C/C++
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ć.
P-52836
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ę.
P-52838
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.
P-52862
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();
P-52863
akwes
» 2012-03-18 17:56:38
yyyy.....


Robisz timer, który uderza raz na 1/60 sekundy.

C/C++
first++; // int
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 ;>
P-52864
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.
P-52895
« 1 »
  Strona 1 z 1