Computação Gráfica
Trabalho II - 2020/2
INTRODUÇÃO
Este trabalho prático da disciplina de Fundamentos de Computação Gráfica, que
deverá ser feito em dupla ou individualmente, consiste em desenvolver
um jogo usando OpenGL.
Considere que este jogo é uma versão melhorada do jogo Asteróides (https://www.youtube.com/watch?v=WYSupJ5r2zo).
Neste jogo o usuário deverá manipular um Disparador de Tiros com o objetivo de eliminar Naves Inimigas que estão ao seu redor e podem destruí-lo.
O Disparador
pode andar pra frente e para trás e girar para esquerda e direita ao
redor de seu centro. Além disto, o disparador pode disparar tiros para
atingir os inimigos.
A representação visual deste disparador deve ser semelhante à nave da figura a seguir.
Figura - Exemplo de Disparador
As Naves Inimigas devem ser representadas por objetos semelhantes aos da figura a seguir.
Figura - Exemplo de Naves Inimigas
Não serão aceitos trabalhos que não sejam genéricos quanto ao número de objetos gráficos manipulados.
CENÁRIO BÁSICO DO JOGO
Quando o jogo começa o usuário tem três
"vidas", de maneira que se o disparador for atingido por uma nave inimiga, ou por um tiro, o jogo ainda pode continuar.
Um exemplo do cenário do jogo é apresentado na figura a seguir.
Figura - Exemplo de Cenário do Jogo
DETALHAMENTO
O Disparador
deve ser
manipulado pelo usuário com as setas para esquerda, para direita, e
para cima. Uma sugestão de como fazer o movimento pode ser visto nesta página.
O Disparador não pode passar dos limites laterais da janela.
Além
de movimentar o disparador, deve ser possível atirar cada vez que o
usuário pressionar a tecla ESPAÇO. Deve ser possível dar até 10 tiros
em sequência, sem ter que esperar o tiro anterior acabar.
O tiro deve ser disparado na direção "para frente" do disparador.
As naves inimigas atiram contra o Disparador da mesma maneira, mas de forma automática e aleatória.
É necessário que haja, no mínimo, quatro modelos distintos de Naves.
Os modelos devem ser armazenados apenas uma vez, e instanciados várias
vezes. A descrição de cada modelo deve ser lidas de arquivos, no
formato descrito aqui. A
quantidade de modelos e de instâncias(naves) deve ser genérica e facilmente alterável,
modificando-se apenas uma variáveis que determine a quantidade de naves.
O movimento das naves deve ser gerado de forma automática, mas eles
devem seguir a trajetória de uma curva de Bèzier. A curva de Bèzier
deve cada nave ser gerada de tempos em tempos, acrescentando mais um
ponto de controle a cada momento.
Quando um tiro do Disparador atinge uma Nave Inimiga, ela desaparece da tela e não retorna ao jogo. O jogador, por sua vez, perde uma "vida", como se tivesse sido atingido por um tiro.
No início do jogo as naves devem ser posicionadas de maneira aleatória na tela, sem que haja colisão entre elas.
O jogo termina quando todos as Naves Inimigas forem destruídas, ou quando as vidas do jogador acabarem. Se
o jogador conseguir destruir todas as Naves, uma mensagem avisando
que ele ganhou o jogo deve ser exibida e a execução do programa é encerrada.
Para calcular a intersecção dos tiros com os objetos e dos objetos entre si, pode ser usado o envelope de cada um (x e y
mínimo e máximo).
Deve ser possível sair do jogo a qualquer momento pressionando a tecla ESC.
Modelos de Objetos
Os
modelos das Naves são de livre escolha, desde que sejam
formados por objetos compostos por um conjunto de quadrados coloridos.
A descrição destes objetos deve ser feita por meio de arquivos texto,
conforme o formato a seguir.
#CORES
4
1 0 0 0 (definição da cor 1 - PRETO)
2 255 0 0 (definição da cor 2 - VERMELHO)
3 0 255 0 (definição da cor 3 - VERDE)
4 255 255 255 (definição da cor 4 - BRANCO)
#OBJETO
5 4 (número de linhas e colunas do objeto)
1 1 1 1
1 3 3 1
1 3 3 1
2 2 2 2
1 1 1 1
Entrega
-
Data de entrega no Moodle e apresentação: 29/10/2020 até o
horário de início da aula, nesta sala de entrega.
- Os
trabalhos podem ser desenvolvidos em duplas. Os arquivos, contendo os
fontes do programa, devem ser compactados e submetidos pelo Moodle até
a data e hora especificadas. ENVIE APENAS ARQUIVOS .ZIP, ou seja,
não envie 7z, rar, tar.gz, tgz, tar.bz2, etc.
-
A nota do trabalho depende da apresentação deste no laboratório, na
data marcada. Trabalhos entregues mas não apresentados terão sua nota
anulada automaticamente. Durante a apresentação será avaliado o domínio
da resolução do problema, podendo inclusive ser possível invalidar o
trabalho quando constatada a falta de conhecimento sobre o código
implementado.
-
A cópia parcial ou completa do trabalho terá como consequência a
atribuição de nota ZERO ao trabalho dos alunos envolvidos.
FIM.