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.

  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!

19 Comment

  1. É 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. Muito bom, este tutorial vai ajudar muito meus alunos de C.
    Túlio Você já é um Ninja.

  3. 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,

  4. 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.

  5. Boa noite!

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

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

    Vlw!

  6. 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…

  7. 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.

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

    Até Mais!!

  9. 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.

  10. 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!

  11. 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!!!

  12. tulio vc, ta de parabens. valeu!!

  13. 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?

  14. 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!!!

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

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

  17. 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 é?

  18. 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.

Deixe uma resposta