Link -> Link do przykładowych programów
Aby sterować obiektami w programach, grach potrzebna jest nam znajomość obsługi klawiatury,
Opis:
Aby sterować obiektami w programach, grach potrzebna jest nam znajomość obsługi klawiatury,
#include <allegro5/allegro.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_font.h>
int szer=320, wys=240, rozm=40;
int main()
{
al_init();
al_install_keyboard();
al_init_font_addon();
al_init_font_addon();
ALLEGRO_KEYBOARD_STATE klawiatura;
ALLEGRO_DISPLAY *okno = al_create_display( szer, wys);
al_set_window_title( okno,"Allegro5 klawiatura i czas");
ALLEGRO_BITMAP *kwadrat = al_create_bitmap(rozm,rozm);
ALLEGRO_FONT * font8 = al_create_builtin_font();
ALLEGRO_FONT * font8 = al_create_builtin_font();
al_set_target_bitmap(kwadrat);
al_clear_to_color(al_map_rgb(200,0,0));
al_set_target_bitmap(al_get_backbuffer(okno));
int x=140, y=100;
double czas = al_get_time();
while( !al_key_down( &klawiatura, ALLEGRO_KEY_ESCAPE))
{
al_get_keyboard_state(&klawiatura);
if ( al_get_time() > czas + 0.01)
{
if ( al_key_down(&klawiatura, ALLEGRO_KEY_RIGHT ) && x < szer-rozm) x=x+1 ;
if ( al_key_down(&klawiatura, ALLEGRO_KEY_LEFT ) && x > 0) x=x- 1 ;
if ( al_key_down(&klawiatura, ALLEGRO_KEY_DOWN ) && y < wys -rozm) y=y+1 ;
if ( al_key_down(&klawiatura, ALLEGRO_KEY_DOWN ) && y < wys -rozm) y=y+1 ;
if ( al_key_down(&klawiatura, ALLEGRO_KEY_UP ) && y > 0) y=y- 1 ;
czas = al_get_time();
}
al_clear_to_color(al_map_rgb_f(0.5,0.5,0.5));
al_draw_bitmap (kwadrat,x,y,0);
al_draw_textf(font8,al_map_rgb(255,255,0), 10, 10, 0,"x=%3d , y=%3d", x, y);
al_draw_bitmap (kwadrat,x,y,0);
al_draw_textf(font8,al_map_rgb(255,255,0), 10, 10, 0,"x=%3d , y=%3d", x, y);
al_flip_display();
al_rest(0.001);
}
al_destroy_bitmap(kwadrat);
al_destroy_display(okno);
return 0;
}
int szer=320, wys=240, rozm=40;// wysokość i szerokość ekranu, utworzymy, wielkość kwadratu.
al_install_keyboard();//
instalujemy klawiaturę.
A
tak, al_uninstall_keyboard();// odinstalowujemy
klawiaturę.
ALLEGRO_KEYBOARD_STATE
klawiatura;//
tworzymy zmienną do struktury stanów klawiatury.
while(
!al_key_down(
&klawiatura,
ALLEGRO_KEY_ESCAPE))//
początek pętli głównej,sprawdzenie czy wciśnięty klawisz
escape, kończący program.
al_get_keyboard_state(&klawiatura);
//odczyt stanu klawiatury
if ( al_key_down(&klawiatura, ALLEGRO_KEY_RIGHT ) && x < szer-rozm) x=x+1 ;//sprawdzenie jaki klawisz wciśnięty i czy pozycja x (minus szerokość bitmapy) większa od szerokości ekranu.
Kody klawiszy <-link
if ( al_key_down(&klawiatura, ALLEGRO_KEY_RIGHT ) && x < szer-rozm) x=x+1 ;//sprawdzenie jaki klawisz wciśnięty i czy pozycja x (minus szerokość bitmapy) większa od szerokości ekranu.
Kody klawiszy <-link
double
czas
= al_get_time();//zwraca liczbę sekund od czasu zainicjowania
4 komentarze:
Można by dodać jeszcze- czy klawisz został wciśnięty (nie zależnie jaki).
Bardzo fajna seria poradników, niestety czasami brakuje podstawowych informacji dla początkujących (czyli dla mnie ;). Mam nadzieję że pojawią się jeszcze kiedyś artykuły o Allegro 5.
Pozdrawiam!
Program u mnie błędny i nie działa, musialem dopisać linie:
al_get_keyboard_state(&klawiatura)
przed petla while()
@Anonimowy co znaczy że program błędny? program jest poprawny tylko stan klawiatury jest pobrany dopiero w pętli...
Prześlij komentarz