• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Mauricio Taumaturgo

Duvidas com o Allegro no Dev Cpp (C++) em liguagem C++

1 mensagem neste tópico

Estou programando no Allegro, tentando fazer um Jogo da Velha, só que na hora de movimentar o cursor ele deixa um rastro, tentei concertar criando um novo bitmap e usando ele como bitmap auxilar, só que agora quando eu movimento o cursor, a imagem fica preta, se eu nao me engano ela fica preta porque entra em um loop, ai como eu peço pra apagar a imagem preta ele apaga tudo, ja tentei nao apagar a imagem mas nao tem jeito! Não sei como concertar, por favor me ajudem, esse é o meu codigo:

#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 *buffer = create_bitmap (640, 480) ;
    BITMAP *tabuleiro = load_bitmap ("H:\\jogodavelha.bmp", pal) ;
    BITMAP *fundopreto = load_bitmap ("H:\\fundopreto.bmp", pal) ;
    BITMAP *boneco = load_bitmap ("H:\\boneco.bmp", pal) ;
    BITMAP *boneca = load_bitmap ("H:\\boneca.bmp", pal) ;
    BITMAP *cursor = load_bitmap ("H:\\cursor.bmp", pal) ;
    BITMAP *menu = load_bitmap ("H:\\menu.bmp", pal) ;
    BITMAP *ajuda = load_bitmap ("H:\\ajuda.bmp", pal) ;
int m = 700 ;
int n = 500 ;   
int k = 320 ;
int l = 240 ;
if (!key [KEY_ENTER] ) {
   draw_sprite (buffer, menu, 0, 0) ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;        
}
while (!key[KEY_ESC]) {
if (key[KEY_H]) {
   draw_sprite (buffer, ajuda, 0, 0) ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}                    
if (key [KEY_ENTER]) {             
   draw_sprite (buffer, tabuleiro, 0, 0) ;
   draw_sprite (buffer, cursor, k, l) ;
   blit (buffer, screen, 0, 0, 0, 0, 640,480) ;
}
if (key [KEY_RIGHT]) {
   draw_sprite (buffer, fundopreto, 0, 0 ) ;      
   draw_sprite (buffer, cursor, k, l) ;
   clear_bitmap (fundopreto) ;   
   k ++ ;
   blit (buffer,screen, 0, 0, 0, 0, 640,480) ;
}
if (key [KEY_LEFT] ) {
   draw_sprite (buffer, cursor, k, l) ;
     k-- ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}
if (key [KEY_UP]) {
   draw_sprite (buffer, cursor, k, l) ;
   l -- ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}
if (key [KEY_DOWN]) {
   draw_sprite (buffer, cursor, k, l) ;
   l ++ ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}
       
if (key[KEY_A]) {
   draw_sprite (buffer, boneco, k, l) ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}
if (key[KEY_D]) {
   draw_sprite (buffer, boneca, k, l) ;
   blit (buffer, screen, 0, 0, 0, 0, 640, 480) ;
}             
} ;
return 0;
}
END_OF_MAIN()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora