Primeiro programa em C com Allegro

Continuando a séria de posts sobre Allegro, vamos ver como iniciar um programa usando essa biblioteca. Que por sinal, é bem simples usando o Dev C++. 

No Dev C++, vamos no menu File > New > Project
Abrirá a seguinte tela:

Tela 1 - Escolhendo o tipo de projeto

Entre na aba MultiMedia, escolha Allegro application (static) e escolha a linguagem C ou C++, para este post vamos usar o C. Você pode também definir o nome do projeto, aqui definimos como Tutorial Allegro. Após, podemos clicar em Ok.

O Dev C++ pedirá que você escolha um diretório para salvar o projeto, e também o nome do arquivo do projeto, podemos deixar Tutorial Allegro.dev mesmo.

Após salvarmos, o Dev C++ já mostra um arquivo fonte, onde já foi iniciado a Allegro, por isso eu disse que o Dev facilita bastante nossa vida. :)
Vou comentar as linhas de código criadas pelo Dev.

C:
  1. #include
  2.  
  3. /* assinatura das funções para quando iniciar e sair da biblioteca, é bom usar para organizar a estrutura do código fonte. */
  4. void init();
  5. void deinit();
  6.  
  7. /* funcao principal do arquivo fonte */
  8. int main() {
  9. /* chamada da função init() para inicializar a biblioteca allegro */
  10. init();
  11.  
  12. /* loop onde sera criado o jogo/aplicação
  13. while (!key[KEY_ESC]) {
  14. /* put your code here */
  15. }
  16.  
  17. /* chamada da função para desiniciar a Allegro */
  18. deinit();
  19. /* return 0 para finalizar o programa */
  20. return 0;
  21. }
  22. END_OF_MAIN()
  23. /* macro para manter a vantagem de poder ser compilada em várias plataformas. Obs: coloquei o comentário depois, para não dar erro. */
  24.  
  25. void init() {
  26.  
  27. /* declaração de 2 variáveis, uma para guarder a profundidade de cores suportada pelo computador do usuário (depth) e outra para guardar a resolução/janela (res), ambas inteiras (int) */
  28.  
  29. int depth, res;
  30.  
  31. /* funcao da biblioteca para inicialá */
  32. allegro_init();
  33.  
  34. /* guarda a profundidade de cores que a maquina do usuário suporta em depth, retornada pela funcao desktop_color_depth() da Allegro */
  35. depth = desktop_color_depth();
  36.  
  37. /* se retornou 0, usar 32bits de cor */
  38. if (depth == 0) depth = 32;
  39.  
  40. /* setando a profundidade de cor para depth, a vantagem de se usar a mesma profundidade de cor do usuário é aumentar a velocidade, pois elimina a necessidade de conversões entre a usada na aplicação e a do usuário */
  41. set_color_depth(depth);
  42.  
  43. /* cria uma nova janela do tamanho 640x480 */
  44. res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
  45.  
  46. /* se res for 0, ocorreu um erro, entao mostra a mensagem de erro e sai do programa */
  47. if (res != 0) {
  48. allegro_message(allegro_error);
  49. exit(-1);
  50. }
  51.  
  52. /* aqui vamos iniciando tudo o que queremos usar do Allegro */
  53.  
  54. /* inicia o timer */
  55. install_timer();
  56.  
  57. /* inicia o teclado */
  58. install_keyboard();
  59.  
  60. /* inicia o mouse */
  61. install_mouse();
  62. /* add other initializations here */
  63. }
  64.  
  65. void deinit() {
  66.  
  67. /* limpa o buffer do teclado */
  68. clear_keybuf();
  69. /* add other deinitializations here */
  70. }

Para testarmos o programa, basta apertarmos F9. O Dev C++ pedirá para salvarmos o arquivo fonte. Podemos deixar o nome padrão main.c.

Se tudo ocorrer bem, e provavelmente ocorrerá, aparecerá a seguinte tela:

Tela 2 - Primeiro programa em Allegro Rodando

Bom, espero que tenham gostado. Qualquer dúvida comentem!

Até a próxima!

Comentários (19)

19 Comments »

  1. Diego Nadalini Lopes said,

    August 20, 2006 @ 22:01

    É isso ai Túlio você está de parabéns ,compartilhando seus conhecimentos e tentando destravar a mente daqueles que o cerébro está quase fundindo,rsrs.
    Abs.

  2. jean said,

    September 13, 2007 @ 10:21

    Bom :D

  3. Ivair said,

    October 7, 2007 @ 15:03

    Muito bom, este tutorial vai ajudar muito meus alunos de C.
    Túlio Você já é um Ninja.

  4. Tulio Faria said,

    October 9, 2007 @ 15:29

    Olá pessoal,

    obrigado pelos elogios...

    Ivair, quanto mais eu aprendo mais eu acho que num sei nada... rs... Tô longe de ser um ninja :)

    Abraços,

  5. Walldemar said,

    November 23, 2007 @ 22:56

    Bons dias,
    Valeu por todas as dicas, tem sido de grande auxilio.
    T +

    obs.: Falta um " */ " na linha 12 do seu código , sei porque copiei para ter ele gravado com os comentários e notei que faltou.

  6. Foster said,

    June 5, 2008 @ 20:53

    Boa noite!

    Criei vergonha na cara agora em começar aprender Allegro.

    Seu tutorial tá ótimo, facilitará e muito em meu aprendizado.

    Vlw!

  7. Gabriel... said,

    February 14, 2009 @ 17:25

    porra, mas eu sou um azarado mesmo, não toquei numa vírgula do código, só apertei o F9 e o dev já me cuspiu um monte de erro na cara.
    E por fim criou um arquivo Makefile.win (abri no notepad, mas não entendi nada), apontando [Build Error] ["Teste] Error 1 .

    Google, lá vou eu...

  8. Gabriel... said,

    February 14, 2009 @ 17:38

    Descobri, agora vou falar o que era, vai que ajuda alguém. Em um outro tutorial sobre a INSTALAÇÃO do Allegro um cara deu uma dica que pra ele resolveu um problema dele, mas criou o meu. Eu nem sei se foi nesse blog ou em outro, mas o sujeito disse que pra funcionar ele foi nas opções do compilador e mandou acrescentar -lalleg na linha de comando do linker. Eu fiz isso, e agora suspeitei que o meu problema vinha daí. Foi só tirar e resolveu. Não entendi nada, me parece que isso causou definições múltiplas de várias coisas. Não sei o que é o tal -lalleg.

  9. Rafael said,

    February 16, 2009 @ 14:42

    Cara, ficou muito bom o seu tutorial. Continue assim, aprendendo e repassando o conhecimento.

    Até Mais!!

  10. carlos cubas said,

    June 10, 2009 @ 01:53

    alguem sabe outra maneira de tentar resolver o problema comentado pelo gabriel, pois todo vez que compilo dá este erro [build error][error 1], se souberem me avisem porfavor tenho que entregar um programa em c semana que vem na universidade.

  11. Mauricio Taumaturgo said,

    June 17, 2009 @ 17:19

    Tulio, eu estou tentando fazer um jogo da velha no Allegro, e estou usando as teclas de 1 a 9 pra indicar os locais, gostaria de saber: como eu faço pra alternar entre os jogadores?...Desde já, obrigado!

  12. jaciane said,

    June 26, 2009 @ 13:18

    cara muito bom!!!!!!!!se vc tiver algum projeto p desenvolvermos
    jogos ou algo do tipo,e consequentemente conhecimentos (apesar de estar engatinhando em programação)gostaria de participar...obrigada!!!

  13. adilson said,

    July 30, 2009 @ 15:58

    tulio vc, ta de parabens. valeu!!

  14. adilson said,

    July 30, 2009 @ 16:01

    tulio gostaria de saber como eu faço uma agenda no dev-c++
    pois eu fis no lazarus , fucionou beleza mais no dev-c++ nao da erro?
    vc pode mindar uma força?

  15. Palestini said,

    October 9, 2009 @ 18:44

    quanto ao erro do carlos cubas faz assim:

    1º Passo
    Vá em "Tools" > "Compiler Options"
    Na aba "Directories" > "Binaries" adicione a linha:
    "C:\Dev-Cpp\libexec\gcc\mingw32\3.4.2"

    2º Passo
    Vá em "Tools" > "Compiler Options"
    Na aba "Programs"
    Adicione o caminho completo em todos os campos.
    Por exemplo, no primeiro campo, por default está:
    "gcc.exe"

    Intão o certo ficará:
    "C:\Dev-Cpp\bin\gcc.exe"

    Como todos estão no mesmo diretorio, basta adicionar
    "C:\Dev-Cpp\bin\" antes de todos os campos.

    Depois que eu fiz isso tudo rodou certinho.

    vlws

    muito bom tulio!!!gostei paka do site e tah me ajudanu muitoo!!!

  16. Ramon Oliveira said,

    May 2, 2010 @ 14:32

    valeu TULIO, quando eu crescer quero ser igual a você...
    Um ninja!
    vlw cara abração,seu site é muito bom..

  17. Stil said,

    August 10, 2010 @ 15:51

    Valeu pela otima dica,funcionou perfeito!!!! Kra!!
    Continue assim!!!

  18. Josué said,

    February 8, 2011 @ 13:30

    Olá galera, estou tentando rodar o programa usando Allegro, no entanto já logo de cara apareceram
    [Linker Error] undefined reference to `__dyn_tls_init_callback`
    [Linker Error] undefined reference to `__cpu_features_init`
    Id returned 1 exit status

    lembrando que eu não modifiquei nada do código, só tentei compilar...
    mas não estou encontrando nada no google que solucione isso, alguem sabe o que é?

  19. Hélion said,

    October 11, 2011 @ 00:45

    Josué, o mesmo erro ocorreu comigo, tente salvar o arquivo em um pen drive e coompilar de la, foi o unico metodo que consegui compilar o arquivo. Comigo o problema ocorre com qualquer arquivo.

RSS feed for comments on this post · TrackBack URI

Deixe seu comentário

You must be logged in to post a comment.