Mudanças entre as edições de "Projeto POO - 2009.2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(New page: Neste semestre são propostos dois temas para o desenvolvimento do projeto final da disciplina de Programação Orientada a Objetos. Os trab...)
 
Linha 1: Linha 1:
 
Neste semestre são propostos dois temas para o desenvolvimento do projeto final da disciplina de [[Programação Orientada a Objetos (página)|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'''.
 
Neste semestre são propostos dois temas para o desenvolvimento do projeto final da disciplina de [[Programação Orientada a Objetos (página)|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=
+
=Projeto final 1 - Pintor Vetorial J2D=
  
==Descrição==
+
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==
 
==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 [http://pt.wikipedia.org/wiki/Javadoc 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==
 +
 +
[[Imagem:PintorJ2D.png|Pintor Vetorial J2D]]
 +
 +
* [[Media:PintorVetorialJ2D.zip | Pegue aqui o código fonte com o esqueleto funcional (projeto Netbeans)]]
 +
* [[Media:PintorVetorialJ2D.jar | Pegue aqui o pacote JAR com código compilado]]. Pronto para ser executado.
 +
Exemplo: java -jar PintorVetorialJ2D.jar
  
 
==Soluções dos alunos==
 
==Soluções dos alunos==
Linha 20: Linha 45:
 
-->
 
-->
  
=Projeto final 2=
+
=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:
  
==Descrição==
+
* O jogo deverá prover 3 personagens que poderão ser escolhidos pelo usuário ao iniciar o jogo ([http://pt.wikipedia.org/wiki/Duke_(mascote) Duke], [http://pt.wikipedia.org/wiki/Tux Tux] ou [http://en.wikipedia.org/wiki/Puffy_(mascot) 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 [http://www.spaceinvaders.de ''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==
 
==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 [http://pt.wikipedia.org/wiki/Javadoc 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==
 +
 +
[[Imagem:ImperioJ2D.png|Imperio J2D]]
 +
 +
* [[Media:ImperioJ2D.zip | Pegue aqui o código fonte com o esqueleto funcional (projeto Netbeans)]]
 +
* [[Media:ImperioJ2D.jar | Pegue aqui o pacote JAR com código compilado]]. Pronto para ser executado.
 +
Exemplo: java -jar ImperioJ2D.jar
  
 
==Soluções dos alunos==
 
==Soluções dos alunos==

Edição das 13h34min de 28 de outubro de 2009

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

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

Ponteiros interessantes