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