Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Cayque Silveira

Allegro - criando jogos em c++

Recommended Posts

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite.

Você precisará utilizar Sprites, o qual cada imagem (ou frame de imagem) representa um movimento do personagem, nessa lógica, você só precisara identificar qual imagem representa a direção que o usuário apertar, mudando conforme as teclas de direção.

Exemplo:

#define DIR_CIMA 0
#define DIR_BAIXO 1
#define DIR_ESQ 2
#define DIR_DIR 3

class Jogador
{
	private:
	int direcao;
	public:
	void mover(int novaDirecao){
		direcao = novaDirecao;
		//Agora so limpar e atualizar a tela com a imagem da nova direcao
      	//DesenharJogador(direcao);
	}
};
/* Desenhar imagem do jogador */
void DesenharJogador(int direcao){
	switch(direcao){
		case DIR_CIMA:
		//Desenhar imagem com jogador pra cima
		break;
		case DIR_BAIXO:
		//Desenhar imagem com jogador pra baixo
		break;
		case DIR_ESQ:
		//Desenhar imagem com jogador pra esquerda
		break;
		case DIR_DIR:
		//Desenhar imagem com jogador pra direita
		break;
		default:
		break;
	}
}

Para desenhar o fundo, apenas pesquise por Tiles e mapas usando matriz ( se for um código simples ),

Para desenhar o pulo dele, basta mudar de sprite(de pulo no caso), e diminuir a coordenada y referente a imagem na janela.

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

×