Hej,
zaznaczę od razu, że dopiero zaczynam programować więc proszę o wyrozumiałość. Korzystam z biblioteki allegro5. Mój program ma póki co za zadanie sterować kwadratem w zależności od naciśniętego klawisza,z tym że ruch trwa do czasu aż kolejny nie zostanie wciśnięty, coś na zasadzie snake'a. Tymczasem nie działa mi żadna z pętli WHILE, nawet while(!al_key_down(&klawiatura,ALLEGRO_KEY_ESCAPE)) (program nie reaguje na wciśnięcie ESC). Pętla utrzymująca kwadrat w ruchu również powtarza się, pomimo wciskania klawisza. (na razie rozpisana tylko na strzałkę w dół bo i tak nie działa;p) . W kodzie jest trochę chaos przez różne dziwne próby rozwikłania tego problemu, który jest pewnie trywialny, ale skutecznie blokuje mi postęp nauki;p Dzięki z góry za pomoc

#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>

int main()
{
    al_init();
    al_install_keyboard();
    al_init_primitives_addon();

ALLEGRO_KEYBOARD_STATE klawiatura;
ALLEGRO_DISPLAY *display;
display=al_create_display(300,300);
al_set_window_title(display,"gunwo");
ALLEGRO_EVENT_QUEUE *kolejka;
kolejka=al_create_event_queue();
al_register_event_source(kolejka,al_get_display_event_source(display));
al_register_event_source(kolejka,al_get_keyboard_event_source());
ALLEGRO_EVENT zdarzenie;

int x=10;
int y=10;
int skok=5;

while(!al_key_down(&klawiatura,ALLEGRO_KEY_ESCAPE))
{
    al_get_next_event(kolejka,&zdarzenie);
    if (zdarzenie.type==ALLEGRO_EVENT_KEY_DOWN)
    {
      if(zdarzenie.keyboard.keycode==ALLEGRO_KEY_DOWN)
        do
        {zdarzenie.type=0;
        al_get_next_event(kolejka,&zdarzenie);
        y+=skok;
        al_rest(0.2);
        al_clear_to_color(al_map_rgb(100, 0, 0));
        al_draw_rectangle(x, y, x + 10, y + 10, al_map_rgb(44, 117, 255), 1);
        al_flip_display();}
        while(zdarzenie.type==0);

      if(zdarzenie.keyboard.keycode==ALLEGRO_KEY_UP)
        y-=skok;

      if(zdarzenie.keyboard.keycode==ALLEGRO_KEY_RIGHT)
        x+=skok;

      if(zdarzenie.keyboard.keycode==ALLEGRO_KEY_LEFT)
        x-=skok;

    }
    al_clear_to_color(al_map_rgb(100, 0, 0));
    al_draw_rectangle(x, y, x + 10, y + 10, al_map_rgb(44, 117, 255), 1);
    al_flip_display();

}

al_destroy_display(display);
al_destroy_event_queue(kolejka);
return 0;

}

dodanie znacznika <code class="cpp"> - @furious programming