UFU / FACOM / BCC / ALGORITMOS E ESTRUTURA DE DADOS / TRABALHO
1/2
Assalto (ou Estoura Balão 2.0)
É um jogo no qual o jogador dispõe de um canhão para explodir “balões” que caem do alto. A Figura 1
apresenta uma ilustração do jogo.
O canhão é fixo no “chão”; seu cano movimenta-se no máximo 90° para esquerda ou direita, conforme o
jogador pressiona, respectivamente, as teclas ← e →. A tecla ESPAÇO é utilizada para disparar o canhão; um
toque para cada disparo. A tecla P pausa o jogo. Tocar qualquer das
Há três tipos de balão: azul, vermelho e laranja. O balão azul vale um ponto; possui diâmetro d e cai a uma
velocidade v. O balão vermelho vale três pontos; possui diâmetro d/2 e cai a uma velocidade 2v. Há um
balão vermelho para cada dez balões azuis. O balão
laranja é formado no chão a partir da fusão de balões
azuis e/ou vermelhos não abatidos.
O jogador deve impedir que os balões cheguem ao
chão. Se um total de cinco pontos estiver ao chão,
em qualquer dos lados do canhão, os balões
correspondentes se juntam para formar um balão
laranja. Uma vez formado, esse balão rola em direção
ao canhão e o destrói. O canhão também é destruído
se um balão azul ou vermelho tiver um impacto
direto sobre o canhão. Uma vez destruído o canhão,
o jogo termina.
Teoricamente, o jogo tem infinitas fases. O jogo
Figura 1 - Ilustração de uma cena do jogo Estoura Balão 2.0.
começa na fase 1. Cada vez que o jogador obtiver
uma pontuação > 20, há um incremento no número da fase e o contador de pontos da fase é zerado. A cada
nova fase, v aumenta 30% com relação à fase anterior.
1 O que fazer
Criar um programa em C plenamente funcional que implemente o jogo descrito acima com um visual
similar ao da Figura 1.
2 Restrições
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
IX.
X.
Este trabalho deve ser realizado em grupo de até 4 componentes.
O programa deve ser escrito em conformidade com o Padrão de Codificação da Disciplina.
O programa deve fazer uso da biblioteca graphics.h.
O número n de balões que caem é aleatório, tal que 4 ≤ n ≤ 10.
A posição inicial da queda de cada balão é aleatória.
O percurso de um balão é perpendicular ao chão.
Um disparo do canhão deve ser seguido de um efeito gráfico correspondente ao percurso do
projetil até alvejar um balão ou se perder no “infinito”. A Figura 1 apresenta a trajetória de um
disparo em direção de um balão azul.
A explosão de um balão deve ser representada por um efeito gráfico correspondente. Estilhaços de
explosão de um balão não afetam os demais balões.
O canto superior esquerdo da área do jogo deve apresentar o número da fase (apenas o número).
O canto superior direito da área do jogo deve apresentar os números p (total de pontos da fase) e
q (total de pontos em todas as fases).
UFU / FACOM / BCC / ALGORITMOS E ESTRUTURA DE DADOS / TRABALHO
XI.
XII.
XIII.
XIV.
ii.
2/2
As teclas ativas no jogo devem ser:
i.
← move o cano do canhão para a esquerda;
ii.
→ move o cano do canhão para a direita;
iii.
Barra de espaço dispara o canhão;
iv.
P pausa o jogo. O jogo é reiniciado ao se teclar umas teclas i, ii ou iii.
O grupo deve definir um tema para o jogo e construí-lo de modo consistente com esse tema. Por
exemplo, bruxas; o nome do jogo então seria “O Assalto das Bruxas”; bruxas substituem os balões;
uma bruxa grande substitui o balão laranja; e assim por diante. Não serão admitidos dois jogos com
o mesmo tema.
O tema escolhido pelo grupo deve ser enviado por email para o professor da disciplina.
 O assunto (subject) dessa mensagem deve ser “[GBC034] tema do jogo” (sem as apas).
 O corpo da mensagem deve consistir do nome e do número de matrícula dos componentes
grupo, e o tema do jogo. Esse tema deve ser seguido de um texto explicativo de no máximo
500 caracteres (incluindo espaços).
 O prazo limite para envio do tema é as 23h59 do dia 16 de julho. Haverá o decréscimo de
um ponto sobre o valor total do trabalho para cada dia de atraso.
O programa deve ser modular (arquivos .c e .h). As seguintes funções devem existir no programa :
a) falling_caract () – implementa a queda dos personagens cria e dispõem os balões acima dos
canhões;
b) aim_the_cannon () – mira o canhão, isto é, movimenta o cano do canhão (esq. ou dir.);
c) shoot () – dispara o canhão. Esta função é a responsável por apresentar visualmente o
percurso do projetil até o personagem ou até o projetil se perder no espaço (quando erra o
alvo).
OBSERVAÇÕES
 Atente que o termo personagem foi utilizado nos sub-itens a e c. Isto pressupõe a adoção
de um tema para o jogo;
 Os argumentos e o tipo de retorno das funções acima devem ser definidos pelo grupo.
3 O que Entregar
Na data aprazada, deve ser entregue um “arquivo .zip” com todos arquivos-fonte (não incluir
arquivos .o nem .exe) e um arquivo readme.txt.
Todos os arquivos devem conter o nome e o número de matrícula de todos os componentes do
grupo. O arquivo readme.txt deve conter um texto explicativo sobre o jogo.
O identificador deste trabalho é “assalto” (sem as aspas). Esse identificador deverá ser utilizado
para nomear o arquivo.zip, tal como descrito em http://www.facom.ufu.br/~autran/upload.html
4 Quando Entregar
A data de entrega está expressa no sítio da disciplina no Piazza. Haverá o decréscimo de três pontos
sobre o valor total do trabalho para cada dia de atraso.
5 Como Entregar
Fazer upload de seu arquivo.zip via http://www.facom.ufu.br/~autran/upload.html
Download

Assalto (ou Estoura Balão 2.0)