Vous êtes sur la page 1sur 2

Projeto de COO - 1semestre/2015

Refatorao do cdigo de um jogo


Descrio
Este projeto consiste em realizar a refatorao do cdigo de um jogo, disponibilizado no arquivo
ProjetoCOO.zip, de modo a aplicar diversos conceitos estudados na disciplina Computao Orientada
a Objetos. O jogo, trata-se de um shoot 'em up (http://en.wikipedia.org/wiki/Shoot_'em_up) vertical
bastante simples, sem acabamento (no possui tela de ttulo, placar, vidas, fases, chefes, power-ups,
etc) e que roda de forma indefinida (at que o jogador feche a janela do jogo).
Embora funcione, seu cdigo no foi elaborado seguindo bons princpios de orientao a objetos.
Apesar de ser escrito em Java, o cdigo foi elaborado seguindo um estilo de programao estruturada e
mesmo assim no muito bem feito, com muita repetio de cdigo, havendo enumeras oportunidades
de melhoria. H trs principais aspectos do cdigo que devem ser melhorados na refatorao do cdigo:

Aplicao de princpios de orientao a objetos, atravs da definio de uma boa estrutura de


classes, interfaces e hierarquia de classes/interfaces.
Uso da API de colees do Java ao invs de arrays para manter/gerenciar o conjunto de
informaes relativas s entidades do jogo (inimigos, projteis, etc).
Aplicao de padres de projeto, com o objetivo de tornar a extenso/manuteno do cdigo
mais fcil e flexvel. Devem ser aplicados pelo menos 2 padres de projeto (observao: o
uso de alguma biblioteca/API do Java que implementa um determinado padro no conta como
aplicao de um padro).

O cdigo do jogo composto por dois arquivos fonte: Main.java e GameLib.java. No primeiro
arquivo est implementada toda a lgica do jogo, enquanto o segundo implementa uma mini biblioteca
com recursos teis no desenvolvimento de jogos: inicializao da interface grfica, desenho de figuras
geomtricas e verificao de entrada atravs do teclado.
O foco da refatorao do cdigo deve ser a classe Main. Voc pode assumir que a classe GameLib
uma caixa-preta qual voc no tem acesso ao fonte (como se realmente fosse uma biblioteca feita por
terceiros) e portanto ela no precisa ser trabalhada na refatorao, apenas utilizada. Contudo, se por
algum motivo voc desejar modific-la, para melhor-la ou aplicar algum padro de projeto, fique
vontade tambm.
Alm da refatorao do cdigo, voc tambm deve implementar:

Um novo tipo de inimigo que deve apresentar comportamentos de movimento e de disparo de


projteis que sejam diferentes dos comportamentos apresentados pelos dois tipos de inimigos j
presentes no jogo.
Power-ups: itens que aparecem na tela de jogo e quando coletados pela nave do jogador
modificam o comportamento de disparo da mesma. Devem ser implementados dois tipos de
power-ups diferentes.

Alm da refatorao do cdigo, faz parte do trabalho a elaborao de um relatrio no qual devem ser
documentadas:

Suas crticas ao cdigo original do jogo.


Descrio e justificativa da nova estrutura de classes/interfaces adotada.
Descrio de como a API de colees foi utilizada.
Descrio dos padres de projetos adotados e justificativa para a aplicao dos mesmos.

Observaes sobre o uso da API de colees


Na verso original do cdigo, feito uso extensivo de arrays para gerenciar conjuntos de informaes
relacionados s diversas entidades do jogo (inimigos, projteis, etc). Devido ao fato de arrays serem
estruturas de armazenamento estticas, todos os arrays so alocados com tamanhos fixos e suas
posies so reutilizadas sempre que uma entidade relacionada a determinado ndice torna-se inativa
(quanto sai da tela, no caso dos inimigos e projteis, ou quando abatida pelo jogador, no caso dos
inimigos).
Fazendo-se bom uso da API de colees do Java, para armazenar e gerenciar os conjuntos de entidades,
a reutilizao de posies deixa de ser necessria pois todas as colees implementadas pelo Java so
dinmicas. Contudo importante no esquecer de remover as entidades que se tornam inativas da
coleo que as armazena a fim de se evitar vazamentos de memria durante a execuo do jogo.

Entrega
Este projeto pode ser feito em grupos de at 4 pessoas. Deve ser entregue:

Cdigo fonte refatorado.


Relatrio (em formato PDF).

A entrega dever ser feita pelo TIDIA-Ae, at o dia 01/07/2015. Entregue um nico arquivo ZIP
contendo tanto o cdigo refatorado quanto o relatrio.

Boa diverso!

Vous aimerez peut-être aussi