Lekcja 1.0.4 Allegro5 - klawiatura i time.

 Aby sterować obiektami w programach, grach potrzebna jest nam znajomość obsługi klawiatury,
na początek mały przykładzik:
#include <allegro5/allegro.h>
int szer=320,wys=240;
int main()
{
    al_init();
    al_install_keyboard();
    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(32,32);
    al_set_target_bitmap(kwadrat);
    al_clear_to_color(al_map_rgb(255,255,0));
    al_set_target_bitmap(al_get_backbuffer(okno));
    int x=100, 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-32) 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  -32) 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_flip_display();
        al_rest(0.001);
    }
    al_destroy_bitmap(kwadrat);
    al_destroy_display(okno);
    return 0;
}

Opis:
int szer=320,wys=240;// aby łatwiej zmieniać sobie wysokość i szerokość ekranu, utworzymy dwie zmienne.
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-32) 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
Link -> Link do przykładowych programów  Allegro-5

Brak komentarzy:

Prześlij komentarz