C: Hur man installerar och använder Allegro på sin Windows-dator

De här instruktionerna gäller för Visual Studio 2015, och jag har provkört dem på en 64-bitars Windows 10, i en virtuell maskin inuti VirtualBox. De är baserade på information från Allegro-wikin, avsnittet Windows, Visual Studio 2015 and Nuget Allegro 5.

Om man har en äldre version av Visual Studio än 2015 är det krångligare att installera Allegro-biblioteket. Det finns äldre instruktioner som är skrivna för Visual Studio 2010 på Windows 7.

1. Om pakethanteraren "NuGet"

För att använda Allegro-biblioteket i äldre versioner av Visual Studio var man tvungen att ladda hem Allegro, installera biblioteksfiler och #include-filer på olika platser på datorn, och för varje projekt man skapade ange i Visual Studios projektinställningar vilka platser dessa var.

Med pakethanteraren NuGet finns möjligheten att ange ett "paket" som automatiskt laddas ner och kopplas ihop med ens projekt. NuGet finns i Visual Studio 2015. Det kan hända att den fungerar även i tidigare versioner, men det har jag inte provkört.

Man kan också ladda ner Allegro-bibliotekets källkod och kompilera den, men det är betydligt krångligare, så det följande handlar om att ladda hem en färdigkompilerad, eller "binär", version av biblioteket.

2. Skapa ett projekt i Visual Studio

Starta Visual Studio 2015, och skapa ett nytt projekt. (Klicka på File, välj sen New, och Project.) Vi ska skapa ett tomt projekt, utan någon för-genererad kod, så vi väljer Visual C++ som språk, ett projekt av typen General, och Empty Project:

Ett tomt projekt i Visual C++

Här kan man läsa mer om hur man skapar ett enkelt C-program i Visual Studio 2015.

3. Programmet

Skapa en källkodsfil, till exempel med namnet Allegrospel.c, och skriv in eller kopiera följande programkod:

// A very simple Allegro program

#include <stdlib.h>
#include <stdio.h>
#define USE_CONSOLE
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>

int main(int argc, char *argv[]) {
    ALLEGRO_DISPLAY *display = NULL;

    // Initializing allegro
    if (!al_init()) {
        fprintf(stderr, "Couldn't initialize allegro. Sorry.\n");
        return EXIT_FAILURE;
    }

    if (!al_init_primitives_addon()) {
        fprintf(stderr, "Couldn't initialize allegro addons. Sorry.\n");
        return EXIT_FAILURE;
    }

    // Creating a window
    display = al_create_display(400, 300);
    if (display == NULL) {
        fprintf(stderr, "Couldn't create the window.\n");
        return EXIT_FAILURE;
    }

    // Painting it green
    al_clear_to_color(al_map_rgb(0, 255, 0)); 
    al_draw_filled_rectangle(200, 100, 250, 150, al_map_rgb(255, 0, 0));
    al_flip_display();

    printf("Now you should see a green window with a red square.\n");
    printf("Press ENTER to exit.\n");
    getchar();

    // Exiting the program
    al_destroy_display(display);

    return EXIT_SUCCESS;
}

Ögna igenom programkoden och gissa vad den gör!

4. Installera Allegro med hjälp av NuGet

Om vi nu försöker kompilera och provköra programmet, kommer vi att få en massa felmeddelanden. Det första problemet är att include-filen allegro5/allegro.h inte hittas. Och det är ju egentligen inte så konstigt, för den filen finns inte på datorn än! Den ingår i Allegro-biblioteket, och det har vi inte installerat än.

Vi måste tala om för Visual Studio att vi vill använda Allegro-biblioteket. Man kan ladda ner Allegro själv, från Allegro-projektets webbplats, men det är enklare att låta Visual Studio sköta hela jobbet.

Högerklicka på projektnamnet i Solution Explorer, och välj Manage NuGet Packages i menyn.

Manage NuGet Packages

Nu startas NuGet Package Manager som ett delfönster inuti det stora Visual Studio-fönstret. Skriv Allegro i sökfältet, och installera genom att klicka på Install-knappen.

Installera Allegro med NuGet

5. Projektinställningar för Allegro

När vi installerat Allegro högerklickar vi på projektnamnet i Solution Explorer, och väljer Properties i menyn.

Vi får upp ett fönster med inställningar för projektet. I trädmenyn till vänster väljer vi Configuration Properties, Allegro 5 och Library Type. Den ska vi sätta till Dynamic Debug - Dynamic Runtime.

Allegro-biblioteket finns nämligen i flera olika versioner, som passar för att användas under programutvecklingen respektive när programmet är färdigt.

Välj typ av bibliotek

6. Add-ons

Allegro-biblioteket består av flera olika delbibliotek, till exempel för ljud, för video och för att rita enkla figurer. Vi vill kunna rita enkla figurer. I fönstret med inställningar för projektet väljer vi fortfarande Configuration Properties och Allegro 5, men nu Add-ons. Ändra värdet på Primitives Addon till Yes.

Välj tillägg

Klicka på OK-knappen för att genomföra ändringarna och stänga egenskapsfönstret.

7. Provkör programmet

Kompilera ("bygg") och provkör programmet.

Om allt är rätt ska det dyka upp ett grönt fönster med en röd ruta:

Gröna rutan

Detta är det 400 gånger 300 bildpunkter stora fönster som vi skapade med anropet al_create_display(400, 300) i vårt program. Den gröna färgen skapade vi med al_map_rgb(0, 255, 0), för G:et i RGB står ju just för "grönt".

Dessutom dyker det upp ett konsolfönster, eftersom programmet skriver och läser med hjälp av printf och getchar:

Konsolfönstret

En lite lustig effekt är vad som händer om man minimerar det gröna spelfönstret, och sen öppnar det igen. Då blir det svart:

Svarta rutan

I grafiska fönstersystem, som Microsoft Windows eller Unix-världens X, brukar själva systemet inte lagra och komma ihåg innehållet i de fönster som visas på skärmen. I stället måste programmet som kör i fönstret rita upp innehållet på nytt varje gång fönstret visas, till exempel om det varit minimerat eller dolt av ett annat fönster. Men det här testprogrammet är upptaget med att stå och vänta på inmatning (med getchar), så det kan inte rita något!

(Det kan fungera annorlunda. När jag provkörde på min vanliga dator blev fönstret svart. När jag provkörde precis samma version av Allegro och testprogrammet i en virtuell maskin med VirtualBox på samma dator, blev fönstret inte svart, utan när jag stängde och öppnade fönstret visades den röda rutan på grön bakgrund. Tydligen fungerade grafiken annorlunda i den virtuella maskinen.)

Vi har konfigurerat projektet för att använda debug-versionen av Allegro-biblioteket. Det passar bra när vi utvecklar och provkör våra egna Allegro-program, men om vi ska skriva spel och distribuera dem till andra, bör vi använda en annan konfiguration.

Mer information finns i Allegro-dokumentationen, särskilt referensmanualen och Allegro-wikin.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 29 februari 2016