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

Kolizja z przedmiotem i po 20 sekundach wyświetlenie go ponownie

Ostatnio zmodyfikowano 2011-11-18 09:20
Autor Wiadomość
Przemok123
Temat założony przez niniejszego użytkownika
Kolizja z przedmiotem i po 20 sekundach wyświetlenie go ponownie
» 2011-11-17 22:32:42
Witam
Chce zrobić tak ,że spada sobie przedmiot z góry i gdy nastąpi kolizja to przedmiot zniknie (to mam) ,a po np. 20 s pojawi się znów i tam co 20 s. Spada, Kolizja, znika, 20s , spada, kolizja, znika, 20s .....

Napisałem coś takiego..tylko ,że nie działa:
Przed main:
C/C++
clock_t czas_reakcji;
,a potem w programie:
C/C++
if(( gruszka_y <= 768 ) )
{
    gruszka_y++;
}
else
{
    gruszka_x =( rand() % 950 ) + 50;
    gruszka_y = 0;
}

if(( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka_x, gruszka_y, 71, 79 ) == true ) && wyswietl )
{
   
    pkt += 10; //dodajesz pkt
    textprintf_ex( bufor, tekst, 680, 26, makecol( 255, 0, 0 ), - 1, " +10 pkt", pkt );
    wyswietl = false; //gruszka znika
    czas_reakcji = clock() + 5 * CLOCKS_PER_SEC; //<-
}
if( czas_reakcji <= clock() ) // kiedy czas reakcji jest równy lub mniejszy niż aktualny czas
{
    if( wyswietl == false )
    {
        czas++;
        if( czas >= 200 )
        {
            wyswietl = true; //gruszka sie pojawia
            gruszka_x =( rand() % 950 ) + 50;
            gruszka_y = 0;
        }
    }
    else
   
         masked_blit( gruszka, bufor, 0, 0, gruszka_x, gruszka_y, gruszka->w, gruszka->h );
   
}

Gdy zrobiłem sobie to na zwykłej (niespadającej) bitmapie to działa, zrobiłem wtedy tak:

C/C++
while( !key[ KEY_ESC ] )
{
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
    if( key[ KEY_LEFT ] )
    { //Kiedy jest wcisniety przycisk
        czas_reakcji = clock() + 3 * CLOCKS_PER_SEC; //<-
    }
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
   
    if( czas_reakcji <= clock() ) // kiedy czas reakcji jest równy lub mniejszy niż aktualny czas
    {
        masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
    }
   
    blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
}
  i wtedy jak nacisnąłem klawisz w lewo to bitmapa znikała na jakiś czas i pojawiała się, czyli zadziałało

Dziękuje za pomoc i pozdrawiam
P-44245
DejaVu
» 2011-11-18 08:42:40
C/C++
if( pObiekt && pObiekt->kolizja( pCostam ) )
{
    delete pObiekt;
    pObiekt = NULL;
    ustawTimeout( ID_TIMERA, 20000 );
}
if( zaszedlTimeout( ID_TIMERA ) )
{
    pObiekt = new CObiekt;
}
P-44252
waxx
» 2011-11-18 09:16:42
Po co usuwac obiekt, schowaj go na 20s (jakis bool czy ma go wyswietlac/uzywac przyda sie nawet wewnatrz klasy bazowej)
P-44255
DejaVu
» 2011-11-18 09:18:36
Po co gdybać nad takimi pierdołami skoro i tak nie mają one znaczenia przy skali takiego projektu...?
P-44258
waxx
» 2011-11-18 09:20:19
To i tak latwiej dowalic boola.
P-44259
« 1 »
  Strona 1 z 1