Ich poste den Code, um nur den Hintergrund auf dem Display zu zeichnen. Und ich werde es erklären, nach und nach
#include <stdio.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
#define BACKGROUND_FILE "background.png"
int main(void){
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_BITMAP *background=NULL;
if(!al_init()) {
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}
al_init_image_addon();//should check for errors
display = al_create_display(640, 480);
if(!display) {
fprintf(stderr, "failed to create display!\n");
return -1;
}
background=al_load_bitmap(BACKGROUND_FILE);
if(!background)
{
fprintf(stderr, "failed to load background bitmap!\n");
return -1;
}
al_draw_bitmap(background,0,0,0);
al_flip_display();
al_rest(2.0);
al_destroy_display(display);
al_destroy_bitmap(background);
al_uninstall_system();
return 0;
}
Dieser Teil startet allegro, al_init startet das allegro-System, und al_init_image_addon lässt uns Bitmaps verwenden die ist, wie allegro verwaltet Bilder:
if(!al_init()) {
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}
al_init_image_addon();//should check for errors
Hier wir schaffen eine Anzeige und überprüfen, ob es erfolgreich erstellt wurde:
display = al_create_display(640, 480);
if(!display) {
fprintf(stderr, "failed to create display!\n");
return -1;
}
wir ein Bild Hier laden Sie einfach nur in den Dateinamen setzen und allegro lädt es für Sie eine Rückkehr ALLEGRO_BITMAP * (NULL, wenn nicht erfolgreich). Nach dem Aufruf von al_load_bitmap überprüfen wir, ob das Bitmap erfolgreich geladen wurde.
background=al_load_bitmap(BACKGROUND_FILE);
if(!background)
{
fprintf(stderr, "failed to load background bitmap!\n");
return -1;
}
Allegro bezieht sich auf einen Backbuffer, was bedeutet, dass es nicht direkt auf das Display zeichnen wird. Stattdessen wird es zu einer Kopie der Anzeige (Backbuffer) und sobald Sie den Backbuffer (al_flip_display()) spiegeln, wird diese Kopie (die Sie oben gezeichnet haben) auf einmal angezeigt.
Dies kann sieht hier gesehen:
al_draw_bitmap(background,0,0,0);
al_flip_display();
Wenn Sie viele allegro Sachen werden werden initialisiert, Sie könnten alle zusammen wie zum Beispiel initialisiert werden sollen:
int allegro_startup(void)
{
if(al_init())
{
if(al_init_primitives_addon())
{
if(al_install_keyboard())
{
if(al_install_mouse())
{
if(al_init_image_addon())
{
al_init_font_addon(); //Void
if(al_init_ttf_addon())
{
if(al_install_audio())
{
if(al_init_acodec_addon())
{
if(al_reserve_samples(1))
{
return AL_STARTUP_SUCCESS;
}
else
fprintf(stderr,"ERROR: Failed to reserve samples:(\n");
//al_shutdown_acodec_addon(); Does not exist
}
else
fprintf(stderr,"ERROR: Failed to initialize acodec addon\n");
al_uninstall_audio();
}
else
fprintf(stderr,"ERROR: Failed to install audio\n");
al_shutdown_ttf_addon();
}
else
fprintf(stderr,"ERROR: Failed to initialize ttf addon\n");
al_shutdown_font_addon();
al_shutdown_image_addon();
}
else
fprintf(stderr,"ERROR: Failed to initialize image addon\n");
al_uninstall_mouse();
}
else
fprintf(stderr,"ERROR: Failed to install mouse\n");
al_uninstall_keyboard();
}
else
fprintf(stderr,"ERROR: Failed to load primitives addon\n");
al_shutdown_primitives_addon();
}
else
fprintf(stderr,"ERROR: Failed to install keyboard\n");
al_uninstall_system();
}
else
fprintf(stderr,"ERROR: Failed to initialize allegro system\n");
return AL_STARTUP_ERROR;
}
void allegro_shut_down(ALLEGRO_DISPLAY *display,ALLEGRO_EVENT_QUEUE *event_queue)
{
al_destroy_display(display);
al_destroy_event_queue(event_queue);
al_uninstall_audio();
al_shutdown_ttf_addon();
al_shutdown_font_addon();
al_shutdown_image_addon();
al_uninstall_mouse();
al_uninstall_keyboard();
al_shutdown_primitives_addon();
al_uninstall_system();
}
Here Es gibt viele Tutorials, die viel klarer und ein wenig breiter Themen sind, wenn Sie interessiert sind.
http://stackoverflow.com/questions/6632697/how-do-you-make-a-background-in-allegro-with-c werfen Sie einen Blick hierüber. –
Ich habe es schon gesehen, aber das Programm ist mit Allegro 4 geschrieben – NOVA99