Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
jefferson2008.1

problemas com o allegro no linux

Recommended Posts

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;
}

-_-

Compartilhar este post


Link para o post
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!

Compartilhar este post


Link para o post
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);

}

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×