Tutorial 01- Configurando o SDL

Para saber o que é esse blog, leia o post Hello World.
Paraver o índice dos tutoriais, clique aqui.

Tutorial 01: Configurando o SDL

Nesse tutorial, vou ensinar a configurar o SDL com o Code::Blocks e o compilador MingW no Windows. O Code::Blocks é o meu editor de escolha porque eu uso uma máquina que tem um dual-boot Com Linux (Ubuntu) e Windows, e preciso de um IDE multiplataforma (uso Linux 90% do tempo e preciso de um editor compatível pra usar nos outros 10%).

Se você usa outro IDE, visite o tutorial do Lazy Foo (em inglês) para obter instruções específicas de como configurar.

Primeiro passo: se você ainda não instalou o Code::Blocks, instale agora a versão que já vem com o MingW (codeblocks-8.02mingw-setup.exe).

Segundo Passo: instale o SDL. Faça o Download Nessa Página. Role até "Development Libraries" e faça o download da livraria para MingW (Imagem Abaixo).























- Extraia o arquivo .gz (se não sabe como extrair, baixe o 7zip)
- Tem um arquivo .tar dentro dele. Extraia também.
- Agora você pode copiar a pasta para onde quiser. Nesse exemplo vou usar a pasta C:\

Terceiro Passo: inicie o Code::Blocks, vá em "File" -> "New" -> "Project" e crie um projeto em branco ("Empty Project"). Pode salvar seu projeto onde quiser.
Nota: eu sei que o Code::Blocks tem um template de projeto chamado "SDL Project", mas aqui vamos configurar manualmente pra ter mais controle.

Quarto Passo: vá para "Project" -> "Properties".
Na aba "Build Targets", selecione "Gui Application" para evitar que uma janela de console abra toda vez que você executar seu programa.


Quinto Passo: abra o menu "Settings" -> "Compiler and Debugger".
Nota: você pode também fazer a mesma coisa no menu "Project" -> "Build Options". Qual a diferença? Em "Build Options", você está definindo as configurações do Compilador apenas para o projeto ativo (útil se vc edita mais de um projeto ao mesmo tempo que usam diferentes livrarias). Em "Settings", você está editando as configurações para todos os projetos.

Sexto Passo: vá para a aba "Search Directories" -> "Compiler" e clique em "Add".

Então escolha a pasta "include" da pasta SDL que você extraiu.




Sétimo Passo: na aba "Linker", adicione a pasta "lib" da pasta SDL que você extraiu.



Oitavo Passo: na aba "Linker settings" cole esse texto em "Other linker options":
-lmingw32 -lSDLmain -lSDL

Nono Passo: agora copie o arquivo SDL.dll da pasta que você extraiu (está dentro da subpasta "bin") para a pasta que você vai criar seu projeto. Você vai ter que colocar essa DLL na mesma pasta em que vai ficar seu EXE quando você compilar.

Outra opção é copiar essa DLL para a pasta C:\WINDOWS\SYSTEM32, então seu aplicativo irá encontrá-lo mesmo que não esteja no mesmo diretório. O problema é que se você tiver mais de um aplicativo SDL rodando na sua máquina, você terá conflitos se eles usarem versões diferentes da DLL. Ou seja, sempre distribua seus programas com uma cópia da DLL na mesma pasta.

Décimo Passo: agora estamos prontos para programar. =)
Adicione um novo arquivo source (em "New" -> Empty File") , nomeie como "Main.cpp" (importante que a extensão seja CPP), e cole o seguinte código:


#include "stdlib.h"
#include "SDL/SDL.h"

//Declara uma Surface do SDL para receber o desenho

SDL_Surface *tela;

void desenha() {

// Pega o tempo em Milisegundos
int milisegundos = SDL_GetTicks();

// Declara algumas variáveis
int i, j, yofs, ofs;

// Desenha na tela (mas não mostra o desenho)
yofs = 0;
for (i = 0; i < 480; i++)
{
for (j = 0, ofs = yofs; j < 640; j++, ofs++)
{
((unsigned int*)tela->pixels)[ofs] = i*i + j*j + milisegundos;
}
yofs += tela->pitch / 4;
}

// Atualiza a tela (agora manda mostrar o que foi desenhado)
SDL_UpdateRect(tela, 0, 0, 640, 480);
}


// Início do programa
int main(int argc, char *argv[])
{
// Inicializa o SDL (nesse caso, somente Vídeo)
if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
{
fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}

// Faz com que a memória seja limpa após finalizar o programa.
atexit(SDL_Quit);

// Cria uma janela de 640x480 pixels e 32 bpp
tela = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);

// Se algo der errado, retorna um erro
if ( tela == NULL )
{
fprintf(stderr, "Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}

// Loop principal (repete-se pra sempre, até sairmos do programa)
while (1)
{
// Chama a função de desenhar na tela (que escrevemos acima)
desenha();

// Gerencia os eventos do teclado
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
break;
case SDL_KEYUP:
// Se pressionarmos ESC, saimos do programa
if (event.key.keysym.sym == SDLK_ESCAPE)
return 0;
break;
case SDL_QUIT:
return(0);
}
}
}
return 0;
}



Não se preocupe com os detalhes ainda (nos próximos tutoriais vou explicar). Salve o projeto e compile seu código. Se não ocorreram erros, está tudo pronto. Se não funcionar, volte atrás e verifique se foi feito tudo corretamente. Cheque se você tem a SDL.dll na mesma pasta que seu EXE ou no System32.

Comentários

Unknown disse…
Valew cara pela iniciativa pena que vc naum colocou o restante dos tutoriais
Unknown disse…
eh verdade kra, ainda estamos esperando os próximos tutoriais...
valew
ótimo blog, explicação clara, tomara que você poste mais tutoriais!

vlw
fernandopaivabr disse…
faça referencia a fonte: http://lazyfoo.net/SDL_tutorials/index.php

pegou o esquema la e naum referencia ?? affs !
Rafael Beckel disse…
@ferpa

O cara não lê o post quer sair por aí falando m*.

Tem link para a fonte nesse post e nos anteriores.

Sem mais.
Anônimo disse…
kra vc é muito foda msm
paguei pra ti agora véio
muito obrigado:)
Anônimo disse…
muito bom!

Postagens mais visitadas deste blog

Quarto, quinto... décimo sexto.

Desvendando o SDL (Simple Directmedia Layer)

Renascendo - ou Os Desafios de aprender C e C++