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