SDL e C - Uma dupla sensacional

Neste artigo tentarei apresentar o uso simples da SDL com a linguagem C. Estarei mostrando alguns exemplos práticos para isso.

[ Hits: 58.029 ]

Por: André em 28/01/2011 | Blog: http://127.0.0.1


Introdução



Autor: André S. Rosa Junior - Fairplay
E-mail: andre.rosa36@gmail.com

Créditos: Este artigo foi publicado no site Viva o Linux, sinta-se a vontade para postar em seu site, blog ou outro, desde que os créditos do autor sejam preservados.

NOTA: Todas as informações apresentadas neste artigo foram obtidas na Internet, sendo assim, não ofereço nenhum tipo de garantia ou suporte. Não nos responsabilizamos por qualquer dano ocorrido, tanto na máquina (computador) quanto no software. Siga por sua conta e risco. Também não nos responsabilizamos pelo que o leitor vá a fazer com o conteúdo visto no texto.

Primeiramente: O que é SDL?

Segundo o Wikipédia:

Simple DirectMedia Layer (SDL) é uma biblioteca multimídia e multiplataforma escrita em C (mas diretamente compatível com C++ e possui interfaces para outras linguagens de programação, como Ada, Eiffel, Java, Lua, ML, Perl, PHP, Pike, Python, e Ruby), que cria uma abstração em várias plataformas de gráficos, sons, e entrada de APIs, tornando possível ao programador escrever um jogo de computador ou outra aplicação multimedia já que ela pode rodar em GNU/Linux, Windows, Mac OS Classic, Mac OS X, BeOS, FreeBSD, OpenBSD, Solaris, QNX, IRIX, e muitas outras plataformas não oficialmente suportadas. Ela gerencia video, eventos, audio digital, CD-ROM, som, threads, processamento de objetos compartilhados, rede e tempo.


Fonte: Wikipédia

Resumindo:

SDL é a abreviação de Simple DirectMedia Layer, uma biblioteca multimídia e multiplataforma. A SDL foi escrita na linguagem C, entretanto, ela pode ser usada em outras linguagens como C++, Python e etc. A SDL é muito utilizada no desenvolvimento de jogos e outras aplicações do gênero.

Objetivo do artigo:

Neste artigo, tentarei apresentar esta biblioteca, e, creio eu, após o conteúdo aqui apresentado, o leitor já conseguirá criar aplicações simples sem dificuldades. Isso, é claro, assumindo que o leitor já tenha um conhecimento prévio sobre a linguagem C.

Caso você, leitor não tenha este "conhecimento prévio", sugiro que não leia o artigo, para que não haja uma complicação maior.

Se você não possui tantos conhecimentos na linguagem C, vou deixar como sugestão alguns links que levam à alguns artigos publicados aqui no Viva o Linux. Os artigos do Ricardo Rodrigues Lucca (jllucca) são muito bons, vale a pena dar uma conferida.
Entre outros artigos. Basta fazer uma busca. Como o intuito por aqui não é falar sobre o princípio da linguagem C, pararei com as sugestões de links para artigos por aqui.

    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

A profissão: Programador

Variáveis, if, else e unless em Ruby

Programando em Perl (parte 1)

Fedora 12 - instalação e uso

Livestation - Assista TV em seu GNU/Linux

Leitura recomendada

Estudando recursividade direta e indireta

Tutorial OpenGL v3.0

Tratamento de exceções na linguagem C

Desenvolvendo um plugin de visualização para o XMMS (Parte 1)

Bug afeta todas as distros

  
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 SamL 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 WhiteHawk 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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts