Download - projeto_COO_2015.pdf

Transcript
  • 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!