(Detta gäller när jag skriver detta, 28 september 2011. I framtiden kan det komma nya versioner, med andra versionsnummer, och då kommer katalognamnet anatagligen också att ändras.)
"msvc-10.0" betyder Microsoft Visual C++ 10.0, vilket är den C- och C++-kompilator som ingår i Visual Studio 2010.
I den här mappen finns tre undermappar, bin, include och lib.
Om vi börjar med mappen include så finns där de header-filer som vi ska inkludera i våra Allegro-program.
Som synes ligger de flesta av dem i en undermapp, allegro5, och därför kommer vi att skriva till exempel #include <allegro5/allegro.h> och inte bara #include <allegro.h>.
I mappen lib finns de biblioteksfiler som Allegro-programmen behöver. Filändelsen "lib" betyder "library", alltså "bibliotek". Det är här är så att säga själva biblioteket med Allegro-funktioner som vi kan anropa från våra Allegro-program, uppdelat på flera olika filer och i olika versioner. Till exempel finns det särskilda versioner för debugging.
I mappen bin finns DLL-filer. "DLL" betyder "dynamic-link library", och är en annan variant av biblioteksfiler.
Här kan man läsa mer om hur man skapar ett enkelt C-program i Visual Studio 2010.
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!
Kom ihåg var vi packade upp Allegro-paketet:
Include-filerna finns förstås i mappen include. Det är alltså filer som ska inkluderas i Allegro-programmen med #include, på samma sätt som till exempel stdio.h. De innehåller deklarationer av de programrutiner som Allegro-programmen kommer att anropa. (En deklaration i C talar om att en funktion finns, vad den heter och vilka parametrar man kan skicka till den, men funktionskroppen, med vad funktionen faktiskt gör, finns inte med.)
Vi skulle kunna kopiera Allegros include-filer till Visual C++:s mapp med system-include-filer, men ett bättre sätt är att låta Allegros include-filer ligga kvar där de är, och tala om för Visual Studio var de finns. Därför klickar vi på Project i menylisten, och väljer projektnamn Properties..., så får vi fram projektets egenskapsfönster (eller "property-fönster", om man vill prata svengelska). Använd menyträdet till vänster för att komma fram till allmänna inställningar för C/C++, och markera Additional Include Directories ("ytterligare include-kataloger"):
Lägg till namnet på Allegros include-katalog, i det här fallet C:\Program Files\allegro-5.0.4-msvc-10.0\include:
Klicka på OK för att lägga in ändringen och komma tillbaka till egenskapsfönstret.
Vi måste också tala om för Visual Studio vilka biblioteksfiler vårt Allegro-program ska använda sig av. Därför fortsätter vi i egenskapsfönstret, och använder menyträdet till vänster för att komma fram till indata till länkaren. Markera Additional Dependencies ("ytterligare beroenden"):
Lägg till ett ytterligare beroende, allegro-5.0.4-monolith-mt-debug.lib. Det är nämligen den bibliotekesfilen vi ska länka med. Så här:
Klicka på OK för att lägga in ändringen och komma tillbaka till egenskapsfönstret.
Dessutom måste vi tala om var den och de andra biblioteksfilerna finns. Därför fortsätter vi i egenskapsfönstret, och använder menyträdet till vänster för att komma fram till de allmänna inställningarna för länkaren. Markera Additional Library Directories ("ytterligare bibliotekskataloger"):
Lägg till namnet på Allegros bibliotekskatalog, i det här fallet C:\Program Files\allegro-5.0.4-msvc-10.0\lib:
Klicka på OK för att lägga in ändringen och komma tillbaka till egenskapsfönstret.
En sista inställning som vi måste göra är att tala om var DLL-filerna finns. Välj Debugging i menyn till vänster, och Environment:
Katalogen med DLL-filerna, C:\Program Files\allegro-5.0.4-msvc-10.0\bin, ska finnas med i sökvägen till körbara program, som finns i omgivningsvariabeln PATH Det här är texten vi ska skriva in: PATH=C:\Program Files\allegro-5.0.4-msvc-10.0\bin;%PATH%
Klicka på OK för att lägga in ändringen och komma tillbaka till egenskapsfönstret.
Klicka till slut på OK i egenskapsfönstret.
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:
En lite lustig effekt är vad som händer om man minimerar det gröna spelfönstret, och sen öppnar det igen. Då ritas innehållet inte ut, utan man ser fortfarande bakgrunden:
(Beroende på vilket system man kör på, kan spelfönstret bli svart i stället.)
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!
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. Den som vill lära sig mer om detta kan läsa mer i Allegro-dokumentationen (www.allegro.cc/manual) och i Allegro-wikin (wiki.allegro.cc).