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

[Allegro 4.x] Odliczanie czasu do jakiegoś zdarzenia

Ostatnio zmodyfikowano 2013-09-23 19:20
Autor Wiadomość
hit
Temat założony przez niniejszego użytkownika
» 2013-09-23 15:11:23
A delikatnie jaśniej? Czytam, że za pomocą tego mogę określić liczbę cykli zegara na sekundę, ale jak to zastosować przy tym podkładaniu bomby żeby program działał nieprzerwanie?
P-92539
pekfos
» 2013-09-23 15:24:54
clock() nie zwraca czasu w milisekundach. Poza tym, kod jest bez sensu:
C/C++
czas = clock(); {
    if( clock() - czas > 3000 )
    {
        mapa[ bomber_y / 40 ][ bomber_x / 40 ] = 3;
    }
}
P-92540
hit
Temat założony przez niniejszego użytkownika
» 2013-09-23 15:29:41
Ok rozumiem, więc czas powinienem mieć jeszcze dzielony, jak pokazał kolega ison w innym wątku:

C/C++
textprintf_ex( bufor, font, 0, 0, makecol( 0, 0, 0 ), - 1, "czas gry: %d sekund",( clock() - startTime ) / CLOCKS_PER_SEC );
Na tej zasadzie, ok.
No, a co do tego, że jest bez sensu to cały problem tkwi w tym, żeby ten sens nabrało i właśnie nie mam pojęcia jak ma licznik odliczać te kilka sekund w tle a potem wykonać jakieś działanie. Chodzi mi o to, aby po wciśnięciu klawisza 'A' zmienił się kafelek na mapie na teksturke z bombą, i tak się dzieje, a potem, żeby po kilku sekundach zamienić to na kafelek 'pusty' no i te w boki również ale to już będzie najmniejszy problem. I dlatego założyłem ten wątek, ponieważ jak już napisałem, nie wiem jak odliczać ten czas w tle. Pomożesz? :)
P-92541
pekfos
» 2013-09-23 15:39:03
Najwyraźniej nie rozumiesz swojego kodu. Skoro, po kilku sekundach od puszczenia klawisza A, ma coś się stać, to dlaczego umieściłeś ten kod w warunku, który spełnia się tylko wtedy, gdy klawisz A jest wciśnięty?

Pomożesz?
Przecież cały czas to robię :>
P-92542
hit
Temat założony przez niniejszego użytkownika
» 2013-09-23 15:47:51
No tak, pomagasz ale wiesz o co mi chodziło. Zrozumiałem to co mi napisałeś i już jest zasadniczo ok. Chciałem jeszcze o coś zapytać ale zanim to zrobię to spróbuję sam, może się uda :) Wielkie dzięki pekfos.

Edit:

No więc póki świeży temat. Działa mi to poprawnie, ale pojawia się taki problem, że:
C/C++
if( key[ KEY_A ] ) {
    if( ile_bomb > 0 )
    { mapa[ bomber_y / 40 ][ bomber_x / 40 ] = 2;
        ile_bomb--;
        czas = clock(); bx =( bomber_x / 40 ); by =( bomber_y / 40 ); }

Jak mam dekrementację zmiennej ile_bomb w tym miejscu, no to jak się domyślasz podczas wciśnięcia klawisza wykonuje się to kilkukrotnie, jak  temu zapobiec? Podobnie jest jak w dalszej części:

C/C++
if( clock() - czas > 3000 )
{
    mapa[ by ][ bx ] = 3;
    ile_bomb++;
}

Inkrementuję tą zmienną i ma wartość większą niż powinna.
P-92543
pekfos
» 2013-09-23 16:14:32
C/C++
bool czy_zmniejszac;
P-92546
hit
Temat założony przez niniejszego użytkownika
» 2013-09-23 18:14:44
Ale jak takiego boola użyć dla x bomb? Bo jak mam jedną to fajnie działa, ale jeśli dam więcej to musiałbym mieć albo kilka booli ( dla każdej bomby ) albo nie wiem jak to rozwiązać za pomocą jednego.
P-92549
pekfos
» 2013-09-23 18:22:28
To użyj x booli. Tak samo, jak musisz użyć x czasów.
P-92550
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona