SDL - profesionální hry jednoduše a snadno - 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++

SDL - profesionální hry jednoduše a snadno

sdl now

8. října 2001, 00.00 | Stručný úvod do "Simple Direct Media Library", jenž vám poskytne snadný přístup ke grafice a zvukům a to nejen ve Windows, ale i Linuxu ap..

SDL - Simple Direct Media Library

Co se pod tímto názvem skrývá? 

Knihovna vytvořená tak, aby poskytla rychlý přístup ke grafice a zvukům. Je užívána MPEG přehrávači, emulátory, mnoha hrami (knihovnu používá k portování komerčních her společnost Loki).... Je to knihovna, jež zjednodušuje programování her a aplikací v Céčku. Pokud programujete např. v Pascalu a chcete přejít pod Céčko bude tato knihovna pro vás velkým pomocníkem při tvorbě programů pod Windows. Knihovnu můžete použít v tomto prostředí s VC++, C++Builder a třeba s freewarovým Mingwe32. V těchto prostředích umožňuje knihovna otevírat obrázky BMP, vykreslovat na obrazovku, přehrávat zvuky, ovládat zabudovanou frontu událostí, zkrátka nutné minimum k tomu abyste mohli něco vytvořit. Vše výše uvedené nemusí stačit a proto existuje mnoho doprovodných knihoven (SDL_Image, SDL_Mixer, SDL_net, SFont, SDL_gui a mnoho dalších). 2D Grafika je obsluhována pomocí DirectDraw a tak je celkem slušně rychlá. Knihovna se používá jednoduše a programy pod ní napsané jsou přehledné. Ale nejlepší zprávu si nechávám na konec, SDL knihovna nebyla napsána, proto, aby zjednodušila programování pod Windows, ale aby umožnila snadnou portovatelnost, tedy přenositelnost programů pod různé platformy. Knihovna podporuje Linux, Win32, BeOS, MacOS, Solaris, IRIX, a FreeBSD. . A ta radost, když vaše hra běží i např. pod Linuxem se musí zažít. ;-)). Pokud chcete přesnější vyjádření podívejte se na anglické stránky o této knihovně www.libsdl.org.   

Nastavení SDL

Potom co podle dokumentace nainstalujete SDL, můžeme začít s prvním programem. V prostředí Microsoft Visual C++ postupujte takto:

  1. rozbalte SDL do určitého adresáře např. C:\SDL\
  2. nahrajte SDL.dll do C:\Windows\System nebo ho vždy přidejte do adresáře projektu
  3. přidejte v Tools\Options\Directories\Include files\ cestu k adresáři INCLUDE v našem případě C:\SDL\INCLUDE
  4. vytvořte nový prázdný Win32 projekt: tedy File\New\Projects\Win32 Application, zvolte si jméno projektu a lokaci uložení, pak klikněte na OK a zvolte An empty project a nakonec zvolte Finish
  5. v Project\Settings\ C\C++ \Code Generation\  navolte Multi-threaded. Toto nastavení proveďte u každého projektu, jinak vám to při kompilaci bude psát chybu !!!
  6. vytvořte nový soubor main.cpp a přidejte ho do projektu
  7. přidejte do projektu SDL.lib a SDL_main.lib
  8. nakonec nahrajte do adresáře s programem soubor README-SDL.txt
První program pod SDL

Tak a teď můžeme začít opravdu programovat. Na začátek si zvolíme něco jednoduchého, program načte obrázek a zobrazí ho uprostřed obrazovky a počká do stisknutí klávesy.

#include <stdlib.h>
#include "SDL.h"

int main(int argc, char *argv[])
{
    SDL_Surface *screen,*image;
    SDL_Rect drect,srect;
    SDL_Event event;

    //inicializuje grafiku SDL pokud nastane chyba program ji vypíše a ukončí se
    if (SDL_Init(SDL_INIT_VIDEO)< 0 ) {
        fprintf(stderr, "Problem: %s\n", SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit);
    //nastaví rozlišení 640x480 s 16b barevné hloubky, dále tagy říkají, že grafika bude přes celou obrazovku, screen bude uložen na video kartě a bude se používat Double Buffer, to znamená, že se jedna část se zobrazuje a do druhé se kreslí.
    screen = SDL_SetVideoMode(640, 480, 16,SDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUF);
    //skryje se kurzor myši
    SDL_ShowCursor(0);
    //nahraje se obrázek
    image=SDL_LoadBMP("sdl_title.bmp");
    srect.x=0;
    srect.y=0;
    srect.w=image->w;
    srect.h=image->h;
    drect=srect;
    drect.x=(screen->w-image->w)/2;
    drect.y=(screen->h-image->h)/2;
   //do prostřed obrazovky se vykreslí obrázek
    SDL_BlitSurface(image,&srect,screen,&drect);
    //přehodí se přední a zadní buffer a tím se obrázek zjeví uživateli
    SDL_Flip(screen);
    //čeká se do uvolnění jakékoliv klávesy
    while (SDL_WaitEvent(&event),event.type!=SDL_KEYUP);
    return 1;
}

Jak vidíte program není složitý a SDL je navrženo celkem intuitivně. Příště zkusíme udělat něco co už se bude opravdu hýbat, zde si můžete stáhnout soubory tutoriálu - tutorial.zip (457 KB)


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: