Allegro - Datové soubory a práce s nimi (12. díl) - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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.

#include "allegro.h" // netreba predstavovat
#include "pokus.h" // jmena objektu v datovem souboru

int main()
{
  DATAFILE *datafile; //promenna pro datovy soubor

  allegro_init();
  install_keyboard();

  set_color_depth(16);
  if (set_gfx_mode(GFX_SAFE, 640, 480, 0, 0) != 0) {
    set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
    allegro_message("Nejde grafika: \n%s\n", allegro_error);
    return 1;
  }

  datafile = load_datafile("pokus.dat"); //nacteme si pro promenne jmeno datoveho souboru

  // otestujeme jestli vse probehlo v poradku
  if (!datafile) {
    set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
    allegro_message("Chyba nacitani datoveho souboru!\n");
    return 1;
  }

  // zde uz je videt prace se soubory
  blit((BITMAP *) datafile[POKUS].dat, screen, 0, 0, 0, 0, 640, 480);

  readkey();

  return 0;
}
END_OF_MAIN();

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):

Tématické zařazení:

 » Rubriky  » C/C++  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: