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

[allegro] Pętla

Ostatnio zmodyfikowano 2009-06-26 17:10
Autor Wiadomość
klapaucius
Temat założony przez niniejszego użytkownika
[allegro] Pętla
» 2009-06-25 20:50:11
Chce napisac prostą gierke, w ktorej poruszala by sie pileczka na planszy, jednak mam problem bo chcialbym zeby po nacisinieciu klawisza ^ strzalki w gore pileczka "podskoczyla" (o ile to tak mozna nazwac, gdyz nie jest to jakis dokladny algorytm grawitacji :D) Chodzi o to, aby na chwile o 100 pixeli zmienila swoje polozenie(do gory) i potem wrocila na swoje miejsce. Niestey nie wyglada to tak rozowo w moim kodzie. Co w nim moze byc zle, ze po skompilowaniu, i nacisnieciu strzalk iw gore^ nic sie nie dzieje.
C/C++
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    set_palette( default_palette );
   
    BITMAP * bufor = NULL;
    bufor = create_bitmap( 640, 480 );
    int a = 20;
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( 255, 255, 255 ) );
        rectfill( bufor, 500, 230, 30, 210, makecol( 128, 0, 223 ) );
       
        circlefill( bufor, a, 179, 30, makecol( 255, 0, 234 ) );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        readkey();
        if( key[ KEY_LEFT ] )
        {
            a--;
        }
        if( key[ KEY_RIGHT ] )
        {
            a++;
        }
        if( key[ KEY_UP ] ) // chodzi o to wszystko, co jest ponizej:
        {
            int b = 179;
            while( b == 100 )
            {
                clear_to_color( bufor, makecol( 255, 255, 255 ) );
                circlefill( bufor, a, b, 30, makecol( 255, 0, 234 ) );
                rectfill( bufor, 500, 230, 30, 210, makecol( 128, 0, 223 ) );
                b--;
                rest( 100 );
            }
            while( b == 179 )
            {
                clear_to_color( bufor, makecol( 255, 255, 255 ) );
                circlefill( bufor, a, b, 30, makecol( 255, 0, 234 ) );
                rectfill( bufor, 500, 230, 30, 210, makecol( 128, 0, 223 ) );
                b++;
                rest( 100 );
            }
        }
    }
   
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-8040
DejaVu
» 2009-06-25 21:22:02
C/C++
while( b != 100 )
{
    //...
} //while

while( b != 179 )
{
    //...
} //while
P-8043
klapaucius
Temat założony przez niniejszego użytkownika
» 2009-06-26 14:48:22
tylko ze po skompilowaniu tak jakby petla dziala(gdyz powtarza "rest(100)", co powoduje ze program sie na chwile zawiesza dopoki sie petla nie skonczy), natomiast z tą moją "piłką" nie dzieje. Nie przemieszcza sie. Czyt to moze byc spowodowane, gdyz naprawde nie widze tam niczego zlego
P-8052
DejaVu
» 2009-06-26 15:08:33
Nic dziwnego, że nic się nie dzieje, skoro rysujesz coś w pętlach po buforze i go nie wyświetlasz na ekran :)
P-8053
klapaucius
Temat założony przez niniejszego użytkownika
» 2009-06-26 17:10:35
heh chyba musze sobie w okulatki zainwestowac :) Dzieki wielkie, zamykam temat :)
P-8054
« 1 »
  Strona 1 z 1