Computação Gráfica
Trabalho I - 2019/1
INTRODUÇÃO
Este primeiro trabalho prático da disciplina de Computação Gráfica, que
deverá ser feito em dupla ou individualmente, consiste em desenvolver
um jogo usando OpenGL.
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
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. 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.
É 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.
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 retrona ao jogo. Se uma Nave colide com o Disparador o jogo acaba, com derrota para o jogador.
No início do jogo as naves devem ser posicionadas de maneira aleatória na nela, 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 todass 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: 02/05/2018 até o
horário da aula.
- 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.