Mudanças entre as edições de "Projeto POO - 2013.2"
Ir para navegação
Ir para pesquisar
Linha 120: | Linha 120: | ||
| 339 || pokemon 9 || Enviada pelo cliente para indicar que escolheu o pokemon de código 9 | | 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 | + | | 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 suas informações na tela. 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 | + | | 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. |
|- | |- | ||
Edição das 21h46min de 2 de dezembro de 2013
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.
- Golpes fortes possuem uma probabilidade menor de acerto (40%)
- 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 suas informações na tela. 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
|
---|