Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
Allegro - Datové soubory a práce s nimi (12. díl)
allegro
10. června 2002, 00.00 | Pokračování seriálu o knihovně Allegro. Dnes se poprvé seznámíme s datovými soubory, které se hodí při programování nejen tvůrcům her.
O co vlastně jde?
Určitě každý z vás se s nimi již setkal. Jenom to nemuselo být při programování her, ale spíše při hraní. Velké společnosti si píší sami algoritmus a strukturu těchto souborů. Ale teď k tomu co to vlastně je a jak vám to může pomoci při programování her nebo čehokoliv jiného? Například hrajete hru, která má hodně grafiky i hodně hudby, ale nikde soubory typu bmp nebo jpg či wav nebo mp3 nemůžete najít Kam se poděly? Místo toho je zde kromě exe souboru hry ještě jeden soubor, který má například koncovku dat a je obrovský co do velikosti v MB. No a právě v tomto souboru je vše vhodně uspořádáno a navíc zabaleno (tedy zmenšen obsah). A tuto možnost Allegro i vám standardně nabízí. A my si v dnešním díle popíšeme základní rysy těchto souborů a taky se seznámíme s potřebnými nástroji, které budete potřebovat. To vše je součástí Allegra.
Malý příklad
Zde si popíšeme krok po kroku příklad, jak vytvořit datový soubor, ve kterém bude jedna bitmapa a kterou později v programu zobrazíme na obrazovku. Jako obrázek jsem použil screenshot z minulého dílu, kde byly malé lítající čtverečky.
Programy pro práci s datovými soubory jsou umístěny v adresáři tools v Allegru. My dnes budeme používat pouze soubory grabber.exe a dat.exe. (Popis funkcí naleznete v souboru grabber.txt a zdrojový soubor ve stejném adresáři pod jménem grabber.c a dat.c, ale ke většině se ještě v našem seriálu dostaneme.)
Vytvoření datového souboru
Pokud máte vše připraveno pustíme se do samotného vytváření datového souboru. Po spuštění programu grabber.exe se dostanete do tzv. vývojového prostředí kde v klidu myší uděláte to co potřebujete. My budeme postupovat krok za krokem, kde jednotlivé kroky budou očíslovány. Pro jistotu zahrnu i spuštění a navíc, když se seznamuje s tímto nástrojem poprvé, budu se obzvlášť rozepisovat pokud to bude nezbytně nutné.
1. Spustit program grabber.exe v adresáři allegro/tools. Poté se vám
automaticky spustí nový projekt.
2. Kliknete levým tlačítkem (jako ve Windows) do nabídky Object -> New
-> Bitmap a otevře se vám okno pro zápis jména bitmapy. Například já
jsem zadal jako jméno POKUS. Do okna s nápisem root se vám přidal objekt
bitmap se jménem POKUS.
3. Klikněte na něj pravým tlačítkem a v rolovací nabídce vyberte hned
první položku grab. Otevře se vám dialogové okno s obsahem vašeho disku.
Nebo lépe s obsahem adresáře kde se nachází soubor grabber.exe.
4. Vyberte tedy bitmapu, kterou chcete přidat do datového souboru a klikněte
na OK. Náhled obrázku se vám ukáže v levém dolním rohu obrazovky. Pak můžete
dvojklikem levého tlačítka kliknout na jméno POKUS v položce root (Kde je
seznam objektů v datovém souboru, který je právě načten.) a obrázek
se vám zobrazí přes celou obrazovku. Zpět se dostanete opět jedním kliknutím.
5. Nakonec klikněte do nabídky a vyberte položku File -> Save. Otevře se
vám podobné dialogové okno jako, když jste načítali soubor s obrázkem. Já
jsem uložil soubor pod jménem pokus.dat. Po uložení se vám ukáže výpis s obsahem
datového souboru. Zmáčkněte cokoliv a pak už jenom vyberte položku File
-> Quit v nabídce.
Tímto jste (i já) vytvořili datový soubor, ve kterém je jeden soubor s obrázkem. Již za chvilku si povíme o tom jak ho načíst do programu.
Ještě malinká úprava
V programu se k objektům z datového souboru můžete dostat buď přes indexy jako 0,1,2 atd. anebo přes jména. V našem případě POKUS. Nejprve si tedy musíme vytvořit hlavičkový soubor se jmény. To není problém, protože máme k dispozici program dat.exe, který nyní použijeme. Pokud se váš datový soubor jmenuje pokus.dat a máte ho umístěný ve stejném adresáři jako soubor dat.exe stačí na příkazovou řádku napsat tento příkaz:
dat.exe pokus.dat -h pokus.h
a měl by se vám vygenerovat soubor pokus.h. který mimo komentáře obsahuje podobnou řádku jako je tato:
#define POKUS 0 /* BMP */
Samotný program
A nyní se již podíváme na to jak vypadá samotný program.
|
Popis programu
Nesmíme zapomenout includovat soubor pokus.h, abychom měli přístup k datům pomocí jmen v našem datové souboru. Hned na začátku funkce main si vytvoříme proměnnou typu DATAFILE nebo lépe ukazatel na DATAFILE pojmenujeme ji například *datafile. Příkaz load_datafile nám načte ukazatel na datový soubor do proměnné datafile. Jako parametr bere samozřejmě jméno datového souboru souboru. Ještě před použitím otestujeme zda se datový soubor správně načetl, abychom se případně později vyhnuli padání nebo špatné funkci programu.
blit((BITMAP *) datafile[POKUS].dat, screen, 0, 0, 0, 0, 640, 480);
Tento příkaz je vám velice známy až na první parametr. Formát vybírání z datového souboru je tento:
jmeno_promenne[jmeno_objektu].dat
Tedy jmeno_promenne je datafile a jmeno_objektu je POKUS. Přetypování (BITMAP *) je z toho důvodu, že funkce datového souboru vrací void* tak aby nedošlo k nesprávnému předání parametrů.
To je pro dnešek vše. Příště si povíme o datových souborech více do hloubky. Můžete se mezitím podívat na příklad exdata v adresáři allegro/examples.
Zdrojový soubor k příkladu si můžete stáhnout zde.
Obsah seriálu (více o seriálu):
- Allegro - Knihovna pro programování her I.
- Allegro - Knihovna pro programování her II.
- Allegro - Knihovna pro programování her III.
- Allegro - Knihovna pro programování her IV.
- Allegro - Myš a klávesnice (5. díl)
- Allegro - Jednoduchá hra Střelba (6. díl)
- Allegro - Instalace a konfigurace (7. díl)
- Allegro - Hudba a zvuky (8. díl)
- Allegro - Midi a zvukové proudy (9. díl)
- Allegro - Časovač (10. díl)
- Allegro - Vektory a synchronizace scény (11. díl)
- Allegro - Datové soubory a práce s nimi (12. díl)
- Allegro - Datové soubory a práce s nimi podruhé (13. díl)
- Allegro - Tetris, nic těžkého (14. díl)
- Allegro - Animace (15. díl)
- Allegro - Bitmapy do hloubky a page flipping(16. díl)
- Allegro - MP3 (17. díl)
- Allegro - MP3 podruhé (18. díl)
- Allegro - MP3 potřetí (19. díl)
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007