Projeto POO - 2009.2

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Neste semestre são propostos dois temas para o desenvolvimento do projeto final da disciplina de Programação Orientada a Objetos. Os trabalhos poderão ser desenvolvidos em dupla e deverão ser apresentados em sala nos dias 09 e 10 de dezembro de 2009.

Projeto final 1 - Pintor Vetorial J2D

Desenvolver um aplicativo gráfico em Java que permita desenhar formas 2D. O aplicativo deverá permitir ao usuário:

  • Desenhar diferentes formas geométricas (retângulo, linha, elipse, etc);
  • Desenhar formas com uma cor de preenchimento;
  • Apagar as formas desenhadas;
  • Limpar a tela, apagando todas as formas desenhadas;
  • Preencher com uma cor de fundo as formas já desenhadas;
  • Alterar cor da linha e a cor de preenchimento;
  • Salvar a tela atual em um arquivo de formato próprio;
  • Abrir um arquivo de formato próprio e desenhar na tela as formas lá armazenadas;

Um esqueleto funcional do Pintor Vetorial J2D está disponibilizado aqui nesta página. O código está comentado e isto servirá de documentação para o desenvolvimento do trabalho. Use este esqueleto para desenvolver este projeto final, porém será necessário modificá-lo para atender os requisitos apresentados na seção Requisitos.

Requisitos

  • Cada forma geométrica deverá ter sua própria classe e esta deverá "saber" como se desenhar. Ou seja, deverá conter no mínimo o método desenhar e este irá fazer com que a forma seja desenhada na área de trabalho;
  • É obrigatório o uso dos conceitos de Herança e Polimorfismo. Os mesmos serão necessários para lidar com as diferentes formas geométricas;
  • Todos os métodos deverão ser comentados, de acordo com o padrão do JavaDOC, e dentro dos métodos é necessário comentar cada parte de seu funcionamento chave;
  • Todo o código deverá estar sob uma licença de software (Ex: proprietário, domínio público, software livre);
    • Indique os motivos para sua escolha.

Captura de tela e código fonte

Pintor Vetorial J2D

Exemplo: java -jar PintorVetorialJ2D.jar

Soluções dos alunos

Grupo Licença Adotada Requisitos contemplados Requisitos não contemplados Código Fonte Jar Executável
Juliana & Thiago Beerware Todos Nenhum Código fonte - Projeto Netbeans Código compilado

Projeto final 2 - Império J2D

Desenvolver um jogo em Java usando somente as APIs do Java 2D. O jogo consiste em um personagem que deve destruir os inimigos que surgem em seu caminho. O jogo a ser concebido deve respeitar a seguinte especificação:

  • O jogo deverá prover 3 personagens que poderão ser escolhidos pelo usuário ao iniciar o jogo (Duke, Tux ou Puffy);
  • Todo personagem possui um nível de vida e um nível de poder iniciado em 100. O jogo termina se o nível de vida do personagem chegar a 0;
  • Todos os personagens deverão possuir a seguinte habilidade:
    • Canhão de plasma
      • Munição infinita que retira até 10 pontos da vida do inimigo;
      • No máximo até cinco tiros na tela, após este limite um novo tiro só poderá ser liberado quando um tiro anterior sair dos limites da tela ou atingir um inimigo;
  • Cada personagem poderá possuir até duas habilidades específicas da lista a seguir:
    • Escudo de força
      • Protege o personagem por até 5 segundos contra os disparos e contatos dos inimigos;
      • Requer 50 de poder;
    • Bomba aniquiladora
      • Destrói todos os inimigos (e seus respectivos tiros) que estiverem na tela;
      • Requer 100 de poder;
    • Revitalizador
      • Ao ser acionado transfere todo o nível do poder para a vida;
  • O usuário poderá controlar seu personagem através das teclas de navegação (setas direcionais) ou através de movimentos com o mouse. O personagem poderá ir para cima, baixo, esquerda e direita. O personagem poderá atirar contra os inimigos através da tecla de espaço ou através do botão esquerdo do mouse;
  • Todos os inimigos nascem na parte direita da tela e se deslocam até a parte esquerda da tela, fazendo movimentos para cima e para baixo (semelhante àquele do jogo SpaceInvader);
  • Cada inimigo nasce com um nível de vida de 10 a 100, escolhido aleatoriamente;
  • Cada inimigo pode disparar até 2 tiros, após isto os próximos só serão liberados se algum tiro anterior atingir o personagem do jogador ou quando sair dos limites da tela
  • Ao ser atingido por um tiro o personagem do jogador perde 10 pontos da vida e ao ser tocado por um inimigo o personagem perde 50 pontos e o inimigo morre;
  • Podem existir de 1 até 5 inimigos por vez na tela;
  • Todos os inimigos movimentam-se com uma mesma velocidade;
  • Cada inimigo morto resulta em um ponto para o jogador e aumenta seu nível de poder em 5. Os inimigos tornam-se cada vez mais rápidos sempre que o placar do jogador for múltiplo de 6.

Um esqueleto funcional do Império J2D está disponibilizado aqui nesta página. O código está comentado e isto servirá de documentação para o desenvolvimento do trabalho. Use este esqueleto para desenvolver este projeto final, porém será necessário modificá-lo para atender os requisitos apresentados na seção Requisitos.

Requisitos

  • Cada personagem deverá ter sua própria classe e esta deverá implementar as duas habilidades que foram escolhidas por você;
  • Os inimigos terão sua própria classe;
  • É obrigatório o uso dos conceitos de Herança e Polimorfismo além de Interfaces Java. Os mesmos serão necessários para lidar com os diferentes personagens e suas habilidades, compartilhadas e específicas
  • Todos os métodos deverão ser comentados, de acordo com o padrão do JavaDOC, e dentro dos métodos é necessário comentar cada parte de seu funcionamento chave;
  • Todo o código deverá estar sob uma licença de software (Ex: proprietário, domínio público, software livre);
    • Indique os motivos para sua escolha.

Captura de tela e código fonte

Imperio J2D

Exemplo: java -jar ImperioJ2D.jar

Soluções dos alunos

Grupo Licença Adotada Requisitos contemplados Requisitos não contemplados Código Fonte - Netbeans Jar Executável
Fernando Simão GPL

Todos os requisitos foram contemplados e ainda foram acrescentados:

  • Versão final
    • O chefão aparece quando o jogador fizer 50 pontos
    • Balões com poderes que servem para
      • Aumentar a velocidade do jogador
      • Aumentar o número de tiros do jogador
      • Pegar canhões adicionais (até 3 canhões) para o jogador
  • Versão Depuração
    • Um painel de informações para visualizar as variáveis de controle do jogo
Nenhum
Daniel & Ivon Beerware Todos Nenhum
  • Código fonte
  • Teclas para jogar
    • Espaço - atira
    • E - escudo
    • R - revitalizador
    • B - bomba aniquiladora
Código compilado
Eduardo & Raphael BSD

Todos os requisitos foram contemplados e ainda foram acrescentados:

  • Música de fundo MID
  • Sons WAV relacionados a:
    • Tiros
    • Alerta quando a vida chega a 10
Nenhum
  • Código fonte
  • Teclas para jogar
    • Espaço - atira
    • X - escudo
    • C - revitalizador
    • Z - bomba aniquiladora
Código Compilado

Ponteiros interessantes