Pessoal, é minha primeira vez aqui no fórum, então não sei se estou postando no lugar certo, estou no primeiro semestre
de engenharia da computação(sou iniciante) e estou aprendendo C++, preciso fazer um joguinho no allegro. Já consegui montar um cenário e colocar um personagem
que se movimenta (até ai o joguinho esta funcionando muito bem) mas preciso de ajuda para fazer ele mexer as pernas quando andar, fazer ele pular e fazer o fundo do senário
mover...... alguém sabe como me ajudar?
Este é meu código:
#include <allegro.h>
int x = 400;
//int y = 500;
volatile int milisegundos;
void msec_counter() { milisegundos++; }
END_OF_FUNCTION(msec_counter)
int main()
{
allegro_init(); // abre allegro
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,900,600,0,0); // abre janela grafica
install_keyboard(); // libera teclado
milisegundos = 0;
LOCK_FUNCTION(msec_counter);
LOCK_VARIABLE(milisegundos);
install_int_ex(msec_counter, MSEC_TO_TIMER(1));
//BITMAPS - Imagens do jogo
BITMAP *sky=load_bitmap("BMP/sky.bmp", NULL);
BITMAP *montanhas=load_bitmap("BMP/montanhas.bmp", NULL);
BITMAP *arvores=load_bitmap("BMP/arvores.bmp", NULL);
BITMAP *chao2=load_bitmap("BMP/chao2.bmp", NULL);
BITMAP *terra=load_bitmap("BMP/terra.bmp", NULL);
BITMAP* personagem[3];
personagem[0] = load_bitmap("BMP/personagem.bmp", NULL);
personagem[1] = load_bitmap("BMP/personagem1.bmp", NULL);
personagem[2] = load_bitmap("BMP/personagem2.bmp", NULL);
///Variáveis
int num_frames = 3;
int frame_atual;
int tempo_troca = 50;
//UPDATE
frame_atual = (milisegundos / tempo_troca) % num_frames;
BITMAP *buffer = create_bitmap(900,600); //cria buffer
int mover=300,x=390;
while (!key[KEY_ESC]) {
if(key[KEY_RIGHT]){
mover= x += 1;
}
if(key[KEY_LEFT]){
mover= x -= 1;
}
//DRAW - chama imagens
draw_sprite(buffer,sky,0,0);
draw_sprite(buffer,montanhas,-15,130);
draw_sprite(buffer,arvores,0,325);
draw_sprite(buffer,terra,0,470);
draw_sprite(buffer,chao2,-55,465);
draw_sprite(buffer,chao2,205,465);
draw_sprite(buffer,chao2,450,465);
draw_sprite(buffer,chao2,610,465);
//draw_sprite(buffer, link_esq[frame_atual], 200, 300);
draw_sprite(buffer,personagem[frame_atual],mover,437);
draw_sprite(screen,buffer,0,0);
clear(buffer); //limpa o buffer
}
allegro_exit();
return 0;
}
END_OF_MAIN() // permite portabilidade
arvores.bmp
chao2.bmp
montanhas.bmp
personagem.bmp
personagem1.bmp
personagem2.bmp
sky.bmp
terra.bmp