Avisos:
Usando o Allegro no Dev-C++
Algumas pessoas tiveram problemas para compilar o exemplo da
bola no allegro. O erro que o Dev-C++ reportava ao tentar
compilar o exemplo era:
[linker error] undefined reference to "_imp_key"
Se esse foi o seu caso, olhe
logo abaixo as instruções para
configurar o Dev-C++ para usar a Allegro corretamente.
Descrição do trabalho:
O trabalho consiste em fazer o projeto e a
implementação de um jogo similar ao PacMan. A
implementação desse jogo deve ser feita em C++,
utilizando a biblioteca Allegro.
O jogo
O jogo consiste em um personagem - o PacMan - que está
preso dentro de um labirinto. Uma "rodada" do jogo é dada
como vencida quando todos os pontos do labirinto tiverem sido
ingeridas. Uma vez dada por vencida uma rodada o jogo pode
terminar, informando o "score" do jogador, reiniciar ou,
opcionalmente, o jogo pode prosseguir enquanto o jogador possuir
vidas.
O jogo apresenta os seguintes elementos:
- Labirinto
É o "tabuleiro" deste jogo. Nesse tabuleiro existem 2
tipos de blocos:
- Vazios
Por onde os elementos móveis do jogo podem andar e onde
pontos, pílulas e frutas podem aparecer.
- Paredes
Elementos fixos e intransponíveis do jogo. Nada aparece nem
atravessa um destes.
Espera-se que a disposição de blocos vazios e
paredes seja semelhante à do jogo ou que proporcione alguma
dificuldade para o jogador. Recomenda-se que a
disposição seja lida de um arquivo ao invés de
fixa no código.
- PacMan
Representa o jogador no jogo.
- Fantasmas
Em número de 5, são os inimigos do jogador. Percorrem
o labirinto tentando se aproximar do jogador. Todavia, quando o
jogador ingerir uma pílula estes devem tentar se afastar do
PacMan. Toda vez que um fantasma alcançar o jogador este
morre, exceto quando o jogador estiver sob o efeito de uma pílula.
Neste último caso, quem morre é o fantasma. A velocidade dos fantasmas deve ser igual a velocidade dos
PacMan. No inicio do jogo os fantasmas devem estar todos no mesmo
local, preferencialmente no centro do labirinto.
- Pontos
Eles se encontram espalhados pelo labirinto. Toda vez que o
personagem passar por um deles, tal ponto deve ser removido do
labirinto e o contador de pontuação
incrementado.
- Pílulas
Existem 4 destas, localizadas nas 4 diagonais do labirinto.
São similares aos pontos: uma vez que o jogador passe por
cima de uma delas, esta deve ser removida do labirinto e a
pontuação do jogador incrementada. Contudo,
você programador deve fazer com que elas sejam visualmente
diferentes dos pontos. Além disso, no momento em que o
jogador "ingerir" uma pílula, por um determinado tempo (ex:
10 segundos), o jogador fica invencível. Esse o tempo
restante de invencibilidade deve ser informado ao jogador
através de algum recurso visual ( barra no topo da tela, um
cronômetro, etc)
- Frutas (opcional)
Similares aos pontos. Devem diferenciar-se visualmente destes e das
pílulas. A "ingestão" de uma fruta deve acrescentar
mais pontos ao jogador do que a ingestão de um simples ponto
e a remoção deste do labirinto. Podem aparecer
aleatoriamente em qualquer lugar do tabuleiro onde não
exista um ponto e, após um determinado tempo, por exemplo,
15 segundos, devem desaparecer do tabuleiro.
Implementação
O jogo deve ser implementado utilizando a biblioteca Allegro e escrito em C++. O jogo deve
ser feito para rodar em uma resolução de 640x480.
Sobre a Allegro
Você poderá encontrar vários tutoriais sobre
a Allegro na página da
mesma. Recomendamos o seguinte:
- Allegro
Newbie Tutorial
Apresenta o conceito de double buffering, o uso da allegro,
como detectar colisões de forma genéricas e como
movimentar um elemento na tela.
Para instalar o allegro no Dev-C++ recomendamos o uso do pacote
de desenvolvimento existente em DevPaks.org. Uma vez instalado o
Dev-C++, baixe o pacote dessa página, instale-o clicando
duas vezes sobre o pacote e seguindo as instruções
que aparecerão. Para compilar um jogo usando a
allegro é necessário avisar o Dev-C++ que você desejar criar um programa que usa a Allegro. Para fazer isso, siga o Passo-a-Passo abaixo
- Abra a janela de propriedades do projeto atual (sim, é necessário criar um projeto com o Arquivo > Novo...)

- Selecione a aba "Parameters"

- Adicione a biblioteca do allegro ("liballeg.a") clicando no botão Add Library or Object

Pronto! Agora compile e execute o seu programa. No linux a forma mais "tradicional" de compilar um jogo usando allegro é usando o programa allegro-config, da seguinte forma:
g++ `allegro-config --cppflags --shared --libs` bola.cpp
Atente para o fato de que não usamos aspas simples e sim aspas invertidas na linha do comando acima.
Datas:
Não Definidas
Notas
Não Definidas
Dúvidas
Em caso de dúvidas, entre em contato com o Tiago (tmacam @
dcc . ufmg . br) ou com o professor ( dorgival @ dcc . ufmg . br ).