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: 57.941 ]

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


Realizando alguns ajustes



Agora que sabemos criar uma janela, vamos criar alguns ajustes. Primeiramente, a janela ficou muito grande. Vamos alterar o seu tamanho e sua largura. Para isso, dessa vez, usaremos algumas diretivas. Como eu disse, para seguir este artigo é necessário um conhecimento prévio na linguagem C, logo, não estarei explicando o que é e para que serve uma diretiva.

Após inserir as bibliotecas, adicione as linhas:

#define ALTURA 640
#define LARGURA 480
#define BITS 16
#define TEMPO 4000

Agora, na linha:

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

Vamos fazer uma pequena alteração para:

tela = SDL_SetVideoMode(ALTURA, LARGURA, BITS, SDL_SWSURFACE);

E na linha:

SDL_Delay(4000);

Vamos fazer uma pequena alteração para:

SDL_Delay(TEMPO);

Bem mais organizado agora! Vamos agora definir um título para nossa janela. Para isso, utilizaremos a função SDL_WM_SetCaption().

Então, adicione a seguinte linha abaixo da linha usada para iniciar a SDL:

SDL_WM_SetCaption("Meu programa", NULL);

O código inteiro ficará assim:

#include <stdio.h>
#include <SDL/SDL.h>
#define ALTURA 640
#define LARGURA 480
#define BITS 16
#define TEMPO 4000

int main()
{
   SDL_Surface* tela;
  
   SDL_Init(SDL_INIT_EVERYTHING);
  
   SDL_WM_SetCaption("Meu programa", NULL);
  
   tela = SDL_SetVideoMode(ALTURA, LARGURA, BITS, SDL_SWSURFACE);
  
   SDL_Delay(TEMPO);
  
   SDL_Quit();
  
   return 0;
}

Ótimo! Vamos compilar e executar para vermos como ficou o trabalho:
Bem melhor agora! ;)

Vamos ver, na próxima página, como podemos inserir uma imagem "bmp" em nossa janela.

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

Operadores com a linguagem C

Programando em Perl (parte 2)

Instalando e utilizando o LimeWire no Debian

Trabalhando com classes e métodos em Java (parte 2)

Trabalhando com a interface gráfica em Java (parte 2)

Leitura recomendada

Projeto Icecream (parte 1)

A duplicação do buffer de saída na chamada de sistema fork() do Linux

Algum humor e C++ Design Patterns (parte 2)

Tratamento de exceções na linguagem C

Algum humor e C++ Design Patterns (parte 1)

  
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