Crear un videojuego con la librería Allegro (2)

Continuamos conociendo la librería Allegro, para crear un videojuego. Vamos a ver como cargar una imagen, o mapa de bits. Para ello usaremos la librería de imágenes que pone a nuestra disposición Allegro.

Para poder cargar imágenes debemos usar la librería al5image. Añade esta librería a la clausula uses de tu programa.

uses
  Allegro5,
  Al5image;

Antes de continuar vamos a hacer un pequeño ajuste en nuestro proyecto. Ve al menú Proyecto, Opciones del proyecto.

Opciones de proyecto.

En la nueva ventana, selecciona rutas. Y el campo Nombre del archivo, escribe: bin/juego

De esta manera se creará nuestro programa en un carpeta llamada bin. De manera que queda todo un poco más ordenado.

Continuado con la carga de imágenes, lo primero que debemos hacer es inicializar la librería. Para ello en la rutina Iniciar añadimos la línea:

  al_init_image_addon();

Ahora creamos la imagen, cargándola del disco. Las imágenes las vamos a colocar en una carpeta llamada imagenes. Así quedará así:

  imagen := al_load_bitmap('..' + DirectorySeparator + 'imagenes' +     DirectorySeparator + 'soldado1.png');                                 

De esta manera, cuando se ejecute nuestro programa, se cargará la imagen que está en el directorio imagenes. No te olvides de crear la variable imagen que será de tipo ALLEGRO_BITMAPptr, y colocarla junto a las otras, algo así:

var
  ventana: ALLEGRO_DISPLAYptr;
  ColaDeEventos: ALLEGRO_EVENT_QUEUEptr;
  Evento: ALLEGRO_EVENT;
  Terminar: boolean;
  imagen: ALLEGRO_BITMAPptr;  

Ahora solo queda dibujar nuestra imagen, para ello usaremos la instrucción al_draw_bitmap. A la cual le indicaremos el nombre de nuestra imagen, y su posición.

al_draw_bitmap(imagen, 100, 100, 0);

El último valor, indica si queremos voltear la imagen horizontalmente o verticalmente. Por ahora le pondremos cero.

Por último, debemos indicar a Allegro, que actualice la pantalla, para ello se hace con la instrucción Al_flip_display();

Para ir ordenando un poco el programa, crearemos una rutina llamada Pintar, y dentro de ella pondremos las instrucciones que acabamos de ver

  procedure Pintar();
  begin
    al_draw_bitmap(imagen, 100, 100, 0);
  al_flip_display();
  end;  

Y para terminar, debemos modificar el bucle principal, para que después de iniciar, se realice la llamada a nuestra rutina pintar, quedaría algo así:

begin
  iniciar;
  Terminar := False;
  pintar; //Dibujar en la pantalla
  repeat
    al_wait_for_event(ColaDeEventos, @Evento);
    case Evento.ftype of
      ALLEGRO_EVENT_KEY_DOWN:
        Terminar := True;
    end;
  until Terminar = True;
  Finalizar();
end.   

Cómo el código fuente empieza a ser un poco grande, os dejo un enlace al github dónde lo estoy alojando.

Saludos

Deja una respuesta