Buscar

Trabalho Orientação a Objetos

Prévia do material em texto

Trabalho Orientação a Objetos 
 
O escopo do trabalho é implementar um jogo de batalha em turnos, com as seguintes 
funcionalidades: 
Cadastro de Personagem: 
O programa deverá ter uma opção para cadastro de personagens que farão parte da 
equipe de cada jogador (mais adiante). Um personagem pode ser de uma das 3 classes 
(mais adiante): 
- Guerreiro: Possui como principal atributo o Vigor, e é especialista em combates 
corpo a corpo. 
- Arqueiro: Possui como principal atributo a Agilidade, e é especialista em combates à 
distância. 
- Mago: Possui como principal atributo a Inteligência e é especialista em combates à 
distância. 
Cada personagem possui um nome, que será utilizado para sua identificação no jogo. 
Criação de Equipes: 
 No início do jogo cada jogador criará uma equipe que é composta de 2 personagens 
escolhidos dentre os personagens cadastrados no jogo. Um personagem só pode participar de 
1 equipe por jogo. 
Executar um Jogo 
 Depois das equipes cadastradas, o jogo pode começar. No início do jogo cada jogador 
escolhe a ordem de batalha dos personagens da sua equipe e o jogo se dá em batalhas 
sequenciais onde a equipe que perder todos os seus integrantes perde o jogo. As jogadas são 
realizadas automaticamente e em turnos, conforme a seguinte ordem de execução: 
1. Preparação; 
2. Ataque; 
Um personagem morre quando seus pontos de vida chegam a 0. Quando isso acontece, no 
próximo turno entra o segundo personagem para continuar a batalha. O personagem da outra 
equipe continua na batalha normalmente. 
Fim de Jogo 
Quando uma equipe perde, ela é desmontada e é necessário criar uma nova equipe. A equipe 
vencedora pode ou não ser reaproveitada para um novo jogo e, caso não seja, ela é 
desmontada e seus personagens podem ser utilizados para novas equipes por quaisquer dos 
jogadores. A equipe vencedora no fim do jogo ganha pontos de bônus que podem ser 
utilizados para aumentar os atributos dos personagens dessa equipe. Para isso, o sistema irá 
sortear uma quantidade entre 1 e 5 pontos que serão dados à equipe e o jogador poderá 
distribuir esses pontos entre os atributos dos personagens daquela equipe como achar melhor. 
Após a distribuição dos pontos o jogador decide se continua com a mesma equipe ou se 
desmonta a equipe para a criação de uma nova. Note que desmontando a equipe os 
personagens estarão livres para serem escolhido por qualquer um dos jogadores e continuarão 
com todos os bônus recebidos pelas vitórias anteriores. 
Mecânica da Batalha 
Preparação 
A preparação é o passo anterior à batalha e cada classe possui as seguintes manobras: 
Guerreiro 
- Adrenalina: 8% de chance de aumentar o dano aplicado em 40% na batalha 
- Heroismo: 6% de chance de diminuir em 50% o dano recebido durante a batalha 
Caçador 
- Tiro Certeiro: 15% de chance de aumentar o dano aplicado em 25% na batalha 
- Camuflagem: 3% de chance de diminuir em 100% o dano recebido durante a batalha 
Mago 
- Cura: 5% de chance de restaurar todos os pontos de vida 
- Conflagrar: 10% de chance de aumentar o dano aplicado em 55% na batalha 
Batalha 
Após a preparação, segue-se a batalha, onde os jogadores calculam seus valores de dano ao 
oponente de acordo com as seguintes regras: 
Guerreiro 
Dano Causado = 10 * (agilidade/100) * 1+(sorteio de um valor entre 0.1 e 0.8) 
Caçador 
 Dano Causado = 12 * (agilidade / 50) * 1+(sorteio de um valor entre 0.1 e 0.8) 
Mago 
 Dano Causado = 15 * (intelecto / 25) * 1+(sorteio de um valor entre 0.1 e 0.8) 
Sobre o resultado do dano causado devem ser aplicados os bônus de preparação, se 
houverem. 
Para o oponente receber o dano, deve ser aplicado os bônus de preparação de defesa do 
oponente, se houver. Após isso o valor final do dano deve ser subtraído dos pontos de vida do 
personagem. 
Após a etapa de batalha, se algum oponente tiver pontos de vida menor ou igual a 0 ele é 
considerado derrotado e será substituído por outro personagem da sua equipe que ainda não 
entrou na batalha; ou então o jogo será terminado e essa equipe declarada derrotada caso não 
exista outro personagem em condições se substituí-lo. Se os 2 personagens atingirem essa 
condição os 2 personagens serão substituídos e, no caso de ambas as equipes não terem mais 
personagens para substituir, o jogo é declarado empatado e ninguém recebe a bonificação. 
Pontos de Vida 
A fórmula para definir os pontos de vida iniciais do personagem são: 
Guerreiro 
Pontos de Vida = 50 * (1+(vigor/25)+(agilidade/100)); 
Caçador 
 Pontos de Vida = 35 * (1+(vigor/50) + (agilidade / 100) + (intelecto / 75)); 
Mago 
 Dano Causado = 25 * (1+(vigor / 75) +(intelecto / 75)) 
Considerações Gerais 
Devem ser entregues os modelos de abstração e encapsulamento da solução e a 
implementação em modo console do jogo, levando em consideração os seguintes pontos: 
1. O modelo e a implementação devem permitir que novas classes e novas regras sejam 
adicionadas com o mínimo de manutenção possível; 
2. O modelo e a implementação devem poder ser armazenados em arquivo binário ou 
em outra fonte de dados que a equipe julgar conveniente; 
3. O modelo e a implementação devem permitir que o modelo de persistência seja 
alterado com o mínimo de manutenção possível; 
4. O modelo e a implementação devem permitir que a interface seja alterada (para 
smartphones, ou web ou janelas, por exemplo) com o mínimo de manutenção 
possível; 
5. A implementação deverá seguir o mais fielmente possível o modelo de 
encapsulamento apresentado. 
6. O trabalho será desenvolvido em equipes e avaliado individualmente através de teste 
de autoria de código. As defesas devem ser realizadas até o dia 26/04. O horário para 
defesa pode ser marcado para fora do horário de aula, mediante combinação prévia 
com o professor. 
7. Caso existam trabalhos após o dia 26/04 que não tenham sido defendidos por 
qualquer motivo, os mesmos serão considerados como não defendidos. 
8. Trabalhos defendidos valem até 5.0 pontos. Trabalhos entregues e não defendidos 
valem até 2.0 pontos.

Continue navegando