Projeto POO - 2013.2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

O projeto final da disciplina Programação Orientada a Objetos poderá ser desenvolvido em dupla e deverá ser apresentado em sala no dia 16 de dezembro de 2013.

Javamon - Clone do Jogo Pokemon

Desenvolver um jogo em Java usando somente as APIs do Java 2D. O jogo requer 2 jogadores interagindo através da rede de computadores. Trata-se de uma batalha por rodada. A cada rodada cada jogador escolhe a ação desejada para seu pokemon e o vencedor da rodada dependerá da análise dos golpes, movimentos, etc que foram executados por cada pokemon.

Regras do jogo

  • O jogo deverá oferecer 10 tipos de pokemons
  • Cada jogador deverá ter 6 pokemons, escolhidos dentre os 10 possíveis
  • O jogo termina quando todos os pokemons de um jogador forem derrotados
  • Um jogador poderá escolher um pokemon por vez para participar de uma batalha. Quando um pokemon é derrotado, o jogador poderá escolher outro para colocar em seu lugar, desde que ainda tenha pokemons disponíveis.
  • Cada pokemon possui 4 golpes de luta (2 fracos e 2 fortes), sendo que cada golpe possui o dano que causa e a probabilidade de acerto.
    • Golpes fortes possuem uma probabilidade menor de acerto (40%)
      • Envenenamento - Faz com que o adversário perca 30% de sua vida ao final da rodada em que foi usada.
      • Queimadura - Faz com que o adversário perca 30% de sua vida ao final da rodada em que foi usada.
    • Golpes fracos possuem uma probabilidade maior de acerto (80%)
      • Paralisia - Faz com que o adversário tenha sua velocidade de ataque reduzida em 20% a cada que for usada. Se usado diversas vezes contra o mesmo pokemon, este terá sua velocidade reduzida em no máximo em 80%.
      • Soco - Faz com que o adversário perca 10% de sua vida ao final da rodada em que foi usada.
  • Cada pokemon possui um único item especial e que só pode ser usado uma única vez durante a batalha
    • Recuperar vida - Faz com que o nível de vida do pokemon selecionado fique novamente cheio
    • Curar - Remove o efeito do golpe Paralisia que tenha sido aplicado anteriormente, ou seja, a velocidade do pokemon volta ao seu nível original
  • Todo pokemon possui um nível de vida que inicia no nível máximo que é 100
  • Todo pokemon possui um nível de ataque que vai de 0 a 50
  • Todo pokemon possui um nível de defesa que vai de 0 a 50
  • Todo pokemon possui um nível de velocidade que vai de 0 a 50. A velocidade determina quem irá atacar primeiro.
    • Se o nível de velocidade for o mesmo para os dois pokemons em uma batalha, então é feito um sorteio para determinar quem inicia primeiro

A tabela abaixo indica os valores de ataque, defesa e velocidade de cada pokemon. Também indica qual tipo de pokemon tem vantagem e desvantagem sobre outros tipos.

  • A vantagem significa: Se o pokemon do tipo Fogo atacar um pokemon do tipo Gelo, então a força do seu ataque será aumentada em 50%. Supondo que tenha usado um golpe forte, que tem um dano de 30%, então este ataque será de 45%.
  • A desvantagem significa: Se o pokemon do tipo Fogo atacar um pokemon do tipo Água, então a força do seu ataque será reduzida em 50%. Supondo que tenha usado um golpe forte, que tem um dano de 30%, então este ataque será de 15%.

Lista dos pokemons

Tipo Pokemon Ataque Defesa Velocidade Vantagens Desvantagens
Fogo Ponyta 37 24 39 Gelo/Inseto Água/Terrestre
Gelo Shellder 32 49 19 Planta/Voador Fogo/Pedra
Planta Bulbasaur 34 34 32 Água/Terrestre Inseto/Gelo
Água Goldeen 35 31 34 Fogo/Pedra Planta/Elétrico
Pedra Geodude 40 50 10 Gelo/Elétrico Água/Lutador
Voador Hoothoot 27 27 46 Planta/Lutador Gelo/Elétrico
Inseto Caterpie 35 45 20 Terrestre/Planta Fogo/Lutador
Terrestre Sandshrew 38 43 19 Fogo/Elétrico Planta/Inseto
Elétrico Pikachu 31 19 50 Água/Voador Terrestre/Pedra
Lutador Mankey 43 19 38 Pedra/Inseto Voador

Requisitos do jogo

  • Todo pokemon deverá possui 2 imagens para sua representação gráfica. Uma imagem para quando este estiver de frente e outra quando este estiver de costas.
    • Todas imagens deverão ter obrigatoriamente a dimensão de 80x80 pixels
  • Ao término do jogo, ou seja, quando um jogador teve todos seus pokemons derrotados, deve-se perguntar aos jogadores se desejam iniciar uma nova partida
  • 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 estará sob a licença de software livre GPL

Códigos das mensagens usadas no protocolo de comunicação

Código Corpo Descrição da mensagem
100 Nome do Jogador Mensagem para enviar os nomes dos jogadores. Cada jogador ao conectar no servidor deve inicialmente fornecer seu nome
102 Aguarde Mensagem enviada pelo servidor para o primeiro jogador que se conectou. É usada para informar que o adversário ainda não entrou na sala
200 0:1:2:3:4:5 Envia os códigos dos pokemons que foram selecionados pelo servidor. Cada código é separado por : e os códigos iniciam de 0 a vão até 9
301 ataque forte 1 Enviada pelo cliente para indicar que escolheu o ataque forte 1
311 ataque forte 2 Enviada pelo cliente para indicar que escolheu o ataque forte 2
312 ataque fraco 1 Enviada pelo cliente para indicar que escolheu o ataque fraco 1
313 ataque fraco 2 Enviada pelo cliente para indicar que escolheu o ataque fraco 2
320 item 1 Enviada pelo cliente para indicar que escolheu o item 1
321 item 2 Enviada pelo cliente para indicar que escolheu o item 2
330 pokemon 0 Enviada pelo cliente para indicar que escolheu o pokemon de código 0
331 pokemon 1 Enviada pelo cliente para indicar que escolheu o pokemon de código 1
332 pokemon 2 Enviada pelo cliente para indicar que escolheu o pokemon de código 2
333 pokemon 3 Enviada pelo cliente para indicar que escolheu o pokemon de código 3
334 pokemon 4 Enviada pelo cliente para indicar que escolheu o pokemon de código 4
335 pokemon 5 Enviada pelo cliente para indicar que escolheu o pokemon de código 5
336 pokemon 6 Enviada pelo cliente para indicar que escolheu o pokemon de código 6
337 pokemon 7 Enviada pelo cliente para indicar que escolheu o pokemon de código 7
338 pokemon 8 Enviada pelo cliente para indicar que escolheu o pokemon de código 8
339 pokemon 9 Enviada pelo cliente para indicar que escolheu o pokemon de código 9
600 0=100:1=100:2=100:3=100:4=100:5=100 Enviada pelo servidor para cada um dos clientes no início de cada rodada. Serve para os clientes poderem atualizar na tela as informações sobre seus pokemons. O conteúdo da mensagem é formado pelo código do pokemon seguido pelo seu nível de vida, que são separados pelo símbolo = . A separação dos pokemons também é feita pelo símbolo :, assim como na mensagem 200.
500 (0):0=100:0=100 Enviada pelo servidor para os clientes no final de cada rodada para informar qual jogador realizou a ação primeiro (0 para o jogador1 e 1 para o jogador2), qual a vida do pokemon que está na arena de cada jogador, sendo que o primeiro pokemon apresentado é do jogador1 e o último é do jogador2. A lógica da separação do código dos pokemons e da vida é a mesma da mensagem 600.

Soluções dos alunos

Grupo Licença Código Fonte