Allegro - a GNU C egy multimédiális rutingyûjteménye 

Bevezetés

Az Allegro egy ingyenes, GNU C és Pacific C fejlesztõi környezetben használható rutingyûjtemény. Elsõsorban játékprogramok írására hasznos, mivel magasszintû grafika-, billentyûzet-, egér-, joystick- és hangkártya-kezelést támogat.

Az Allegrot a '90-es évek közepén kezdte el fejleszteni Shawn Hargreaves, egy angol fiatalember. Az elsõ verziókkal csak DOS, késõbb a Linux SVGALIB-je alá lehetett fejleszteni, az újabb verziók azonban már a Windowst és az X Window Systemet is támogatják Stefan Schimanski és Michael Bukin munkája eredményeképpen. Az Allegro új változatain ma több tucat programozó dolgozik - önszorgalomból.

Nem egy igen komoly szoftver készült az Allegro segítségével. Az egyik az XaoS, az egyik legügyesebben megírt valós idõben nagyító fraktálgenerátor.

Mit tud az Allegro?

Az automatikus 32 bites memóriakezelés következtében a grafikák, audio anyagok kezelése nagyon kényelmes, egyszerû. Sokféle fájltípus beolvasható, a memóriában manipulációk végezhetõk, s az esetleges adathordozóra mentés is megoldott. Az Allegro ismeri a BMP, PCX, TGA, TIF grafikus formátumokat, beépített eljárása van MID, MOD, XM, S3M, WAV, VOC illetve FLI fájlok lejátszására.

A beolvasott grafikus fájlokon tetszés szerinti lineáris transzformáció elvégezhetõ. 3D objektumokat is könnyen megjeleníthetünk, mozgathatunk, mintás felülettel vagy csak drótvázzal.

A programozói munkát konfigurációs segédprogramok teszik igen könnyûvé. Teljes dokumentáció áll rendelkezésre jelenleg 40 példaprogrammal és egy akciójáték forrásával. A kész kódra vonatkozóan az Allegro szerzõi gyakorlatilag semmilyen jogi korlátozást nem tartanak fent.

Egy rövid példa

Íme egy nagyon egyszerû, az Allegro rutingyûjteményre illeszkedõ program, ami a képernyõ bal felsõ sarkában megjeleníti a demo1.pcx file tartalmát, majd egy gomb lenyomásáig vár:
#include "allegro.h"
BITMAP *kep;
PALLETE szinpaletta;
main()
{
allegro_init();
install_keyboard();
set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0);
kep=load_bitmap("demo1.pcx", szinpaletta);
set_pallete(szinpaletta);
draw_sprite(screen, kep, 0, 0);
readkey();
}

Közelebbrõl és konkrétabban

A részletekrõl a mindenkori README tájékoztat. Amit itt olvasol, az az 1.3-as verzió README file-jának magyar fordítása.

Az Allegro részint C, részint assembly nyelven készült DJGPP (azaz GNU C) alatti fejlesztések támogatására. Nevét (allegro: gyors, vidám, fényes, olasz) az ,,Atari Low Level Game Routines'' kezdõbetûibõl kapta, mivel a szerzõ Atarin írta a programrendszer elsõ rutinjait.

Néhány fõ jellegzetesség:

Az Allegro mellett nagyon sok kiegészítõ csomag áll rendelkezésre. Létezik GIF-olvasó, többféle GUI, sprite (és animáció) szerkesztõ, TTF-olvasó, MPEG és FLIC-lejátszó és még sok minden más.

Érdemes-e áttérni (elkezdeni) Allegroban programozni?

Igen!

Egyre többen használnak Allegrot, mivel gyors és kényelmes. Ingyenes! Az elkészült program könnyen illeszthetõ Unixra és Windowsra is.

Két hátrányt kell megemlíteni: a rutingyûjtemény egyetlen óriási modul, ezért a legrövidebb Allegrot használó program is legalább 250 kB. (Ez a probléma nem jelentkezik Unixon, mert ott az Allegro-modul dinamikusan töltõdik be a memóriába: pl. a legrövidebb példaprogram 5 kB, a DOS-on egyébként fél megabájtos DEMO.EXE pedig alig 40 kB.) A másik hátrány az, hogy egyelõre a dokumentáció csak néhány nyelven (angolul, franciául, spanyolul és kínaiul) érhetõ el.
 

Példaprogramok

Itt hozzáférhetõ a példaprogramok forráskódja, s néhány 486-os gépen lefordított EXE is. A futtatáshoz szükség van a cwsdpmi.exe file-ra is.
 
Forrás Leírás Futtatható EXE Egyéb szükséges file
ex1.c Hello, world! ex1.exe
ex2.c Bitmap a memóriában ex2.exe
ex3.c Rész-bitmap-ek
ex4.c Palettamanipuláció ex4.exe
ex5.c Billentyûzetkezelés
ex6.c Egérkezelés
ex7.c Timer (idõzítõ)
ex8.c Dupla pufferelés
ex9.c Dupla pufferelés X-módban
ex10.c Fixpontos aritmetika
ex11.c Közvetlen írás a videomemóriába ex11.exe
ex12.c DAT file-ok használata
ex13.c GUI-használat
ex14.c Saját GUI-rutinok ex14.exe
ex15.c Bitmap file betöltése
ex16.c MIDI file lejátszása
ex17.c WAV- és VOC-fájlok
ex18.c PCX file kezelése
ex19.c Scroll, képernyõbontás
ex20.c Tripla pufferelés ex20.exe
ex21.c DAT-file, animáció ex21.exe running.dat
ex22.c Mintás kockák forgatása ex22.exe
ex23.c Bézier-görbék
ex24.c Színek, megvilágítás ex24.exe allegro.pcx
ex25.c 3D sakktábla-mozgatás
ex26.c ,,Kirándulás az ûrben'' ex26.exe
ex27.c Joystick
ex28.c Audio stream-ek
ex29.c Színmélységek ex29.exe
ex30.c Összeadó és kivonó színkeverés
ex31.c Megvilágítás truecolor módban
ex32.c Színes képek truecolor módban
ex33.c TSR MIDI-lejátszó
ex34.c DAT és EXE összefûzése
ex35.c 12 bites színmélység 8 bites módban
ex36.c Árnyalt sprite-ok ex36.exe planet.pcx
ex37.c VBE/AF-támogatás
ex38.c Animációs módok
ex39.c Paletták
ex40.c Színek extrém használata

Jegyzetek

SVGALIB - Lásd Matan Ziv-Av WWW-oldalát. Linux rendszereken man svgalib kiadásával részletes leírás olvasható.
Windows - A WinAllegroval lehetõség nyílik NT4 (Service Pack 3 szükséges) vagy Win95 (legalább 3-as DirectX-szel) vagy Win98 alatti fejlesztésre. Emellett a WinAllegro a Microsoft Visual C++ alatti programozást is támogatja. (GNU C alatti fejlesztés esetén az RSXNTDJ csomag is szükséges.) Részletek...



Kovács Zoltán, KovZol@math.u-szeged.hu
Utolsó módosítás: 1999. február 25.