Conheça a iniciativa da Biblioteca dos Desenvolvedores
Índice da Biblioteca
Área dos Usuários
Fórum de Discussão
Trocar de direção usando Sprite
Nesse artigo vou ilustrar o código para movimentação do pacman em todas as direções utilizando sprites.
Antes de iniciar o código será necessário entender como estão organizados os sprites no arquivo.
A tabela abaixo mostra que na vertical estão definidas as direções dos desenhos, Direita, Esquerda, Cima e Baixo.
Já na horizontal estão definidas as seqüências dos sprites que irão definir o movimento do pacman.
Posições dos Sprites Animação (x), Direção (y).
Sprite
1
Sprite
2
Sprite
3
Sprite
4
Sprite
5
Direita
0,0
25,0
50,0
75,0
100,0
Esquerda
0,25
25,25
50,25
75,25
100,25
Cima
0,50
25,50
50,50
75,50
100,50
Baixo
0,75
25,75
50,75
75,75
100,75
Ao selecionar a posição 0,0 você deverá desenhar na tela o pacman virado para a direita e de boca fechada.
Já na posição 100,0 o pacman está virado para a direita e de boca aberta.
Para fazer a simulação de movimento e de troca de direção é necessário juntar a tabela acima com os direcionais do teclado.
Abaixo segue as especificações dos sprites.
pacpac.bmp
Especificações
Qtde de Desenhos em x[0]:
Qtde de Desenhos em y[0]:
Largura total:
Largura individual:
Altura:
5
4
125 pixels
25 pixels
25 pixels
OBS: Salvar a imagem acima como .BMP. O allegro não aceita o tipo jpg.
O código que iremos usar para movimentar o Robocop e o dragão é o mesmo.
Porém, antes de executar cada um é necessário fazer algumas configurações com relação às especificações citadas acima.
Arquivo de recurso responsável por armazenar apenas a definição da classe Jogador. Todas as características que o pacman vai possuir estão definidas nesse arquivo. São elas:
Variável
Descrição
BITMAP *imgJogador
Guarda imagem do Pacmam
int iPosx
Posição x do pacman na tela
int iPosy
Posição y do pacman na tela
int iSpritex
Posição da animação do sprite
int iSpritey
Posição da direção do sprite
int iLargura
Armazena a largura de um sprite
int iAltura
Armazena a altura de um sprite
Variável
Descrição
CJogador();
Construtor para iniciar as variáveis da classe.
~CJogador();
Destrutor responsável por liberar a imagem do pacman da memória.
void Setax(int);
Seta a posição x do pacman a partir de uma velocidade passada por argumento.
void Setay(int);
Seta a posição y do pacman a partir de uma velocidade passada por argumento.
void Atualiza(BITMAP *buffer);
Renderiza o pacman na tela.
void Controle(int);
Controla a direção do pacman através das setas do teclado.
CÓDIGO...
#include "cjogador.h"
// Arquivo: cjogador.cpp
static int iVelSprite = 4;
CJogador::CJogador()
{
this->imgJogador = load_bitmap("pacpac.bmp",NULL); // Sprites do PacPac
this->iPosx = 0; // Posição x do pacman na tela
this->iPosy = 0; // Posição y do pacman na tela
this->iLargura = 25; // Define a largura do sprite
this->iAltura = 25; // Define a altura do sprite
this->iSpritex = 0; // Inicia animação na posição zero.
this->iSpritey = 0; // Inicia virado para a direita
}