Bom dia, galera.
Estou fazendo um projeto na faculdade que consiste em fazer um jogo com os conceitos do River Raid, de Atari, usando a Livraria Allegro e o Code Blocks.
A maneira que encontrei de fazer o jogo rolar foi fazer o personagem (Jato) parado em relação ao eixo Y e mover o mapa.
Estou tentando manipular os mapas por um vetor struct com 7 posições, que é o número de mapas, mas os mapas não aparecem. Enquanto usava um mapa apenas, estava correndo tudo bem.
Alguém poderia me dar alguma dica?
Estou fazendo errado ao usar um vetor struct?
Não vou colocar o código inteiro, apenas umas partes, pois "clean code" não é uma habilidade que domino e só irá atrapalhar vocês a me ajudarem, mas se for necessário, eu coloco.
Declaração da struct em um arquivo .h
[code=CSS]struct Mapa{
BITMAP* Mapa;
int PosY;
}M[7];[/code]
Carregando as imagens .bmp
[code=CSS]BITMAP* buffer = create_bitmap(SCREEN_W, SCREEN_H);
M[0].Mapa = load_bitmap("Mapas/Intro.bmp", NULL);
M[1].Mapa = load_bitmap("Mapas/Fase 1.bmp", NULL);
M[2].Mapa = load_bitmap("Mapas/Fase 2.bmp", NULL);
M[3].Mapa = load_bitmap("Mapas/Fase 3.bmp", NULL);
M[4].Mapa = load_bitmap("Mapas/Fase 4.bmp", NULL);
M[5].Mapa = load_bitmap("Mapas/Fase 5.bmp", NULL);
M[6].Mapa = load_bitmap("Mapas/Fase 6.bmp", NULL);[/code]
Definindo o ponto onde cada mapa "nascerá"
[code=CSS]for(i = 0; i < 7; i++){
M[i].PosY = 800 - M[i].Mapa->h - L.Bar->h;
}[/code]
Essa foi a maneira que encontrei pra assim que acabar um mapa, já desenhar o outro, de acordo com a posição no pedaço acima. (Já com incremento na posição do eixo Y)
[code=CSS]
while (!key[KEY_ESC]){
while(TimerMov > 0){
if(M[i].PosY<=0){
i++;
draw_sprite(buffer, M[i].Mapa, 0, M[i].PosY);
}
M[i].PosY += 4;
[/code]
Se alguém poder me ajudar no que estou fazendo de errado, seria de muita ajuda. Virei a noite fazendo os sprites e testando a posição do layout e agora empaquei.
Muito obrigado.
Walter Hugo
Super Participante
Registrado
969 Mensagens
17 Curtidas