Mudanças entre as edições de "Projeto POO - 2009.2"
(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= |
− | + | 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: | ||
− | + | * 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
- Pegue aqui o código fonte com o esqueleto funcional (projeto Netbeans)
- Pegue aqui o pacote JAR com código compilado. Pronto para ser executado.
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;
- Canhão de plasma
- 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;
- Escudo de força
- 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
- Pegue aqui o código fonte com o esqueleto funcional (projeto Netbeans)
- Pegue aqui o pacote JAR com código compilado. Pronto para ser executado.
Exemplo: java -jar ImperioJ2D.jar