Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: ArchLinux
Por removido
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

SDL e C - Uma dupla sensacional
Linux user
andrezc
28/01/2011
Neste artigo tentarei apresentar o uso simples da SDL com a linguagem C. Estarei mostrando alguns exemplos práticos para isso.
[ Hits: 19270 ]
Conceito: 10.0   4 voto(s)4 voto(s)4 voto(s)4 voto(s)4 voto(s) + quero dar nota ao artigo

Conhecendo as primeiras funções

Antes de mais nada, vamos criar o arquivo.

$ touch SdlCode.c

E vamos abri-lo para edição:

$ vi SdlCode.c

Isso se você estiver usando o VI, é claro.

Primeiramente, vamos inserir duas linhas:

#include <stdio.h>
#include <SDL/SDL.h>

Nesta primeira linha, como vocês devem saber, estamos incluindo ao arquivo, a biblioteca padrão de I/O (entrada e saída) da linguagem C, nada novo. A novidade aí é a segunda linha, onde adicionamos a biblioteca do SDL ao nosso arquivo. Para usarmos as funções da SDL, precisaremos deste arquivo.

Logo após, vamos criar a nossa função principal, o main() e vamos criar um novo ponteiro para "tela":

int main()
{
   SDL_Surface* tela;

Essa "tela" irá representar a tela (screen) do nosso computador. Sempre que formos nos referir à "tela principal" e nosso programa, iremos usar a "superfície" tela.

Basicamente, o que vamos fazer agora é iniciar a SDL, para isso, usaremos a função: SDL_Init(), recebendo como parâmetro "SDL_INIT_EVERYTHING", então, vamos adicionar a linha:

SDL_Init( SDL_INIT_EVERYTHING );

Vamos agora definir as propriedades de nossa janela, vamos fazer uma janela com as propriedades:: 700x700x16 bits. Para isso utilizaremos a função SDL_SetVideoMode.

Antes de mais nada, vamos dizer que é a tela (aquela que declaramos anteriormente) a responsável pela janela:

tela = SDL_SetVideoMode();

Agora vamos definir as propriedades:

tela = SDL_SetVideoMode(700,700,16, SDL_SWSURFACE);

Vamos agora pausar a nossa janela por alguns segundos utilizando a função SDL_Delay(), o tempo nós passamos como parâmetro de função.

Lembra que inicializamos a SDL? Então, agora vamos finalizar o seu uso. Insira a linha:

SDL_Quit();

Pronto, agora vamos só terminar os detalhes:

return 0;
}

O código em si, ficará:

#include <stdio.h>
#include <SDL/SDL.h>

int main()
{
   SDL_Surface* tela;
  
   SDL_Init(SDL_INIT_EVERYTHING);
  
   tela = SDL_SetVideoMode(700,700,16, SDL_SWSURFACE);
  
   SDL_Delay(4000);
  
   SDL_Quit();
  
   return 0;
}

Salve e compile com o comando:

$ gcc SdlCode.c -o SdlCode -lSDL

Agora vamos executar:

$ ./SdlCode

Como saída, vocês devem ter uma janela como essa:
Se tiverem, é porque deu tudo certo. :-)

Vamos ajustar mais algumas coisinhas na próxima página.

<< Página anterior Próxima página >>




Páginas do artigo
   1. Introdução
   2. Preparando o ambiente
   3. Conhecendo as primeiras funções
   4. Realizando alguns ajustes
   5. Inserindo uma imagem
   6. Conclusão

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por br_rafael em 30/01/2011 - 12:39h:

#include <stdio.h>
#include <SDL/SDL.h>

int main(){
SDL_Surface* tela;
SDL_Init(SDL_INIT_EVERYTHING); // Iniciar o SDL
tela = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
SDL_Delay(4000); // Esperar 4 segundos
SDL_Quit();
return 0;
}

Quando compilo aparece:

$ gcc -o teste-1-sdl teste-1-sdl.c
/tmp/cciduLoZ.o: In function `main':
teste-1-sdl.c:(.text+0xe): undefined reference to `SDL_Init'
teste-1-sdl.c:(.text+0x27): undefined reference to `SDL_SetVideoMode'
teste-1-sdl.c:(.text+0x35): undefined reference to `SDL_Delay'
teste-1-sdl.c:(.text+0x3a): undefined reference to `SDL_Quit'
collect2: ld returned 1 exit status



[2] Comentário enviado por br_rafael em 30/01/2011 - 12:43h:

OK, eu tinha esquecido de colocar o "-lSDL" na hora de compilar.


[3] Comentário enviado por Sam L. em 30/01/2011 - 12:58h:

Legal cara, nota 10. Se for escrever a parte 2 não hesite em pedir ajuda :)


[4] Comentário enviado por White Hawk em 30/01/2011 - 12:59h:

Muito interessante este artigo. Uma coisa que eu não sabia era que o SDL também pode ser usado com Java.


[5] Comentário enviado por andrezc em 30/01/2011 - 13:06h:

Pode deixar, Sam. Mais pra frente eu pretendo fazer a parte 2 sim. :D


[6] Comentário enviado por br_rafael em 30/01/2011 - 13:12h:

Ficou uma sensação de quero mais...

Queria um "Parte 2" mostrando como fazer um personagem se movimentar de um lado a outro da tela (com as setas do teclado e o com o boneco em PNG mexendo as pernas).


[7] Comentário enviado por andrezc em 30/01/2011 - 13:20h:

Oi, Rafael. Então, no próximo artigo eu estarei dando continuidade a manipulação de imagens na tela, mas se eu conseguir resumir bem, talvez dê para falar algo sobre eventos do teclado. Vou escrever a parte 2 sábado que vem.


[8] Comentário enviado por br_rafael em 30/01/2011 - 17:04h:

Pra quem sabe ler inglês, esse tutorial é muito bom (estou lendo e praticando)
http://lazyfoo.net/SDL_tutorials/index.php

Esse artigo também é bom:
http://www.vivaolinux.com.br/artigo/SDL-Otimo-para-criacao-de-jogos


[9] Comentário enviado por andrezc em 30/01/2011 - 17:09h:

A um tempo atrás o Sam L. havia me sugerido esse primeiro link. É sem dúvida alguma uma ótima referência. A melhor sobre SDL para C que já li.


[10] Comentário enviado por br_rafael em 30/01/2011 - 17:25h:

andrezc, estarei aguardando ansiosamente pela "Parte 2". Eu pretendo trabalhar com jogos multiplataforma (Linux e Windows).

Quando eu ganhar R$ 1.000.000,00 com um jogo, estarei muito feliz ao ponto de liberar o código-fonte em licença GPL :) Tenho interesse em criar um jogo 2D de código-aberto para praticar minhas futuras habilidades. Quem souber SDL e C/C++ está convidado a participar. Programo em PHP desde de 2005, mas em C/C++ desde 2011 (não tenho nem 3 semanas de prática). O convite está ai, quem tiver interesse, entre contato comigo. Vamos aprender juntos? A ideia para o jogo eu já tenho.

Rafael A. de Almeida
rafael.kbps@gmail.com


[11] Comentário enviado por andrezc em 30/01/2011 - 17:53h:

Mas você sabe que C e C++ são duas linguagem diferentes, não é ?! Não vou ajudar diretamente em seu projeto pois trabalho o dia inteiro e vou ao curso durante a noite, mas se tiver alguma dúvida e eu souber, eu respondo numa boa.

Boa sorte.


[12] Comentário enviado por br_rafael em 30/01/2011 - 18:11h:

Sei que são diferentes, mas que sabe C pode aprender C++


[13] Comentário enviado por evamberto em 09/10/2011 - 19:43h:

Quem quiser aprender mais sobre SDL olhe esse site show, http://lazyfoo.net/SDL_tutorials/ !!!!!!!


[14] Comentário enviado por evamberto em 09/10/2011 - 19:44h:

parabéns pelo o artigo!!!



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.