Ir ao conteúdo
  • Cadastre-se

problemas com o allegro no linux


jefferson2008.1

Posts recomendados

boa tarde galera

estou aprendendo a utilizar a blibioteca allegro e estou com problema ao carrega imagem

ja usei todos tutoriais possiveis e sempre o mesmo erro

este daqui:

Shutting down Allegro due to signal #11

Falha de segmentação

deixou ai um exemplo de um codigo que usei de um tutorial

e peço para quem poder me da uma luz , uma ajuda a entender onde esta a falha


#include <allegro.h>

int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
PALETTE pal;
BITMAP *img = load_bitmap("/desktop/cao_e_gato2.jpg",pal);
while(!key[KEY_ESC])
{ clear_bitmap(img);
textout(screen, font, "Exemplo", 30,20, makecol(255,0,0 ) );
draw_sprite(screen, img, 30,30 );
};
return 0;
}

-_-

Link para o comentário
Compartilhar em outros sites

"BITMAP *img = load_bitmap("/desktop/cao_e_gato2.jpg",pal); "

tu tem certeza absoluta que existe esta imagem neste caminho?

olha que desktop que eu saiba so existe no home a não ser se você criou na raiz

se for no home então a linha seria esta:

BITMAP *img = load_bitmap("~/desktop/cao_e_gato2.jpg",pal);

tenta assim

tchau!

Link para o comentário
Compartilhar em outros sites

continuo com o mesmo problema

estou aprendendo a mexer no linux

e na biblioteca allegro

infelizmente toda imagem que tento carregar com a biblioteca não da certo

ja testei muitos codigos que achei por ai e nenhum da certo aqui no linux

so no windws

me ajuda ai galera a ver onde esta o erro

a pagina abri e fechar logo depois indicando o seguinte erro

^[[3~Shutting down Allegro due to signal #11

Falha de segmentação

#include <allegro.h>

void init();

void Menu();

int main()

{

init();

Menu();

return 0;

}

END_OF_MAIN()

void init()

{

int depth, res;

allegro_init();

set_color_depth(32);

res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);

if (res != 0) {

allegro_message(allegro_error);

exit(-1);

}

install_timer();

install_keyboard();

install_mouse();

}

void Menu()

{

// Carrega todos os BITMAPs

BITMAP *fundo = load_bitmap("~/desktop/fundo.png", NULL);

BITMAP *jogar = load_bitmap("~/desktop/jogar.png", NULL);

BITMAP *conf = load_bitmap("~/desktop/conf.jng", NULL);

BITMAP *sair = load_bitmap("~/desktop/sair.jng", NULL);

BITMAP *seta = load_bitmap("~/desktop/seta.png", NULL);

// Cria o BITMAP usado no DoubleBuffering

BITMAP *buffer = create_bitmap(640, 480);

// Variável que conterá a opcao ativa

int op;

while(!key[KEY_ESC])

{

clear(buffer);

blit(fundo, buffer, 0, 0, 0, 0, 640, 480);

draw_sprite(buffer, jogar, 250, 300);

draw_sprite(buffer, conf, 250, 350);

draw_sprite(buffer, sair, 250, 400);

if(op == 0)

{

draw_sprite(buffer, seta, 200, 400);

}

else if(op == 1)

{

draw_sprite(buffer, seta, 200, 400);

}

else if(op == 2)

{

draw_sprite(buffer, seta, 200, 400);

}

if(key[KEY_UP])

{

if(op > 0 && op < 3) op--;

}

if(key[KEY_DOWN])

{

if(op > 0 && op < 3) op++;

}

if(key[KEY_ENTER])

{

if(op == 1)

{

// Executa o codigo de jogar

}

else if(op == 2)

{

// Executa o codigo de congifuracoes

}

else if(op == 3)

{

// Executa o codigo de sair

}

}

blit(buffer, screen, 0, 0, 0, 0, 640, 480);

//se não for adicionada esta chamada o programa fica em um while true

//um estado de espera ocupada que consome muita cpu

readkey();

}

destroy_bitmap(fundo);

destroy_bitmap(jogar);

destroy_bitmap(conf);

destroy_bitmap(sair);

destroy_bitmap(seta);

}

Link para o comentário
Compartilhar em outros sites

cara, posta com código não como citação se não fica impossivel te ajudar...

Seguinte este código-fonte você pegou da apostila do adriano de c(foi essa né http://equipe.nce.ufrj.br/adriano/c/apostila/allegro/docs/programa.html, senão dá uma olhada aqui), e pelo que eu vi nesta apostila (já tinha estudado nela) este fonte era pra demonstrar como fazer um menu e ela está meio inacabada d+ então te recomendo tentar pegar outro fonte e rodar ou passar o gdb que você verá onde é que está com falha na segmentação.

se você não sabe usar o gdb aqui está: www.vivaolinux.com.br/artigo/Aprendendo-a-utilizar-o-GNU-Debugger-(parte-1)/

eu acho melhor mesmo é que você tente rastrear este erro com o gdb...

boa sorte

OBS: Um exemplo de como está inacabada este fonte na parte da variavel op ela não tem definição nenhuma enquanto ela é usada logo abaixo para uma comparação como se ela já tivesse sido zerada um vez, pode ser isso que esteja dando falha na segmentação

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...