A SDL é uma biblioteca gráfica desenvolvida com o objectivo de tornar fácil a escrita de jogos para diferentes plataformas. Neste tutorial vou explicar como configurar o VC++ e o DevC++ com a SDL e introduzir os seus conceitos mais básicos, iniciar uma janela, mostrar uma imagem e tratar eventos.

Índice:
  1. Como/onde fazer o download da SDL
  2. Configurar o VC++ para a SDL
  3. Configurar o DevC++ para a SDL
  4. Conceitos básicos
  5. Programa Hello World
  6. Conclusão e Download

Caso haja dúvidas podem-me contactar pelo mail pedro__santos@iol.pt.

Para fazer o download da SDL, primeiro é preciso ir à sua página [http://www.libsdl.org], ir à página da versão mais recente da SDL (na altura em que este tutorial foi escrito a versão mais recente era a 1.2), e fazer o download para o compilador pretendido na parte em que diz SDL-devel (de SDL development). Esse zip já trás tudo, inclusivé as RunTime Libraries (DLLs). Caso seja necessário só a DLL da SDL também está nessa mesma página um outro zip a dizer SDL-runtime. O ficheiro para desenvolvimento tem os headers, as libs, documentação...

Tal como disse, com o zip vem uma DLL: SDL.dll, esse ficheiro tem de estar sempre na directoria do projecto, ou então uma solução melhor seria colocá-lo no c:\windows\system (win 95, 98, ME) ou em c:\windows\system32 (on windows NT, 2000 and XP), assim ficaria acessível de qualquer parte.

Ir para o ínicio da página.

Agora que o download já está feito, é preciso configurar o VC++, pois há certas especificações que têm de ser alteradas, para que ele suporte a SDL. Primeiro tem que se descompactar o zip. Eu tenho a SDL no directório c:\desenvolvimento\SDL.

Depois abre-se o VC++ e vai-se a File-»New-»Win32 Console Application, escolhe-se a directoria onde se quer colocar o projecto e o nome do projecto. No exemplo que vou por para download, o projecto chama-se simplesmente SDL. Depois disto aparece uma janela a perguntar que tipo de aplicação se quer, e escolhe-se Empty Project.

Agora tem-se que ir a Project-»Settings e seleccionar a tab C++. No topo dessa secção está um DropDownMenu em que se podem alterar definições para várias categorias. Nesse DropDownMenu é preciso se escolher Code Generation e nesse novo menu que aparece, onde está Use RunType Library: selecciona-se a opção Multithreaded DLL.

Outra coisa que é necessário fazer é por os directórios onde estão os headers e as libs da SDL visiveis ao VC++ quando ele vai complicar. Para isso vai-se a Tools-»Options-»Directories e em Include Files acrescenta-se a directoria dos includes da SDL, no meu caso seria c:\desenvolvimento\SDL\include e também é necessário escolher Library Files e fazer a mesma coisa que se fez para os includes, no meu caso tive de acrescentar c:\desenvolvimento\SDL\lib. Depois vão a Project-»Add To Project-»Files, vão à directoria SDL\lib e insiram todos os ficheiros que lá estiverem. Já está! :)

Para tirar o prompt que aparece por trás da aplicação, vai-se a Project-»Settings-»Link, e onde diz Project Options, estre muitas coisas está lá "/subsystem:console" que tem de ser mudado para "/subsystem:windows".

Ir para o ínicio da página.

Para configurar o DevC++ de modo a que se possa criar um projecto com a SDL, tem de se fazer o seguinte: primeiro, ir a File-»New Project-»New Console Aplication. Assim que o projecto estiver criado, tem que se ir a Project-»Project Options, e onde diz "Further object files or linker options:" tem que se escrever: "-lmingw32 -lSDLmain -lSDL" (sem as aspas).

Depois tem que se descompactar os headers da SDL para o directório DevC++\include e o conteúdo da directoria lib do zip para DevC++\lib.

Para tirar o prompt que aparece por trás da aplicação, tem que se ir a Project-»Project Options e seleccionar "Do not create console".

Ir para o ínicio da página.

Agora que já está tudo configurado, falta apenas apreender alguns conceitos básicos para perceber como a SDL funciona. O principal conceito é o de Surface.

Uma Surface não é mais do que um termo técnico em inglês que simboliza Imagem, na SDL existe uma struct SDL_Surface, uma forma fácil de perceber é encarar a SDL_Surface como se fosse uma imagem e não pensar mais no resto. Associado a uma imagem está um rectângulo, que indica a posição da Imagem no ecrã. A struct SDL_Rect é outro pormenor a não esquecer.

Por fim, só falta conhecer o SDL_event, que como o nome indica, é uma estrutura para representar eventos.

Em cada programa irá haver uma SDL_Surface especial, aquela que apontará para o que está a ser mostrado no ecrã.

Ir para o ínicio da página.

Este será um programa muito simples que mostra uma imagem e fica à espera que seja pressionado o escape ou que se carregue na setinha, todo o código está comentado e foi compilado no VC++ e no DevC++. Para verem o código carreguem aqui. O resultado final é o seguinte:

Ir para o ínicio da página.

Este é um exemplo muito simples, se foi dificil de perceber não se preocupem, eu também demorei um pouco a entrar nisto mas depois não há nada mais fácil! Nesta altura não é necessário que tenham conpeendido todas as funções, usem-nas como receita, que com o tempo tudo parece mais claro! :)

Para download está a listagem do código, a imagem, os projectos feitos para o DevC++ e para o VC++ (se bem que não devem funcionar por causa das directorias ;), também dois executáveis, um de cada compilador e só falta é o SDL.dll que em princípio ja devem ter.
Download sdl_int.zip.

Ir para o ínicio da página.