Escolar Documentos
Profissional Documentos
Cultura Documentos
Dungeon Clash
Jogos RPG são bastante populares, especialmente depois do
surgimento do Dungeons & Dragons na década de 70.
Inspirado por estes tipos de jogos, surge o Dungeon Clash,
criado com o objetivo de oferecer uma vivência prática de
programação para os alunos da disciplina de POO. O jogo
propoe uma aventura RPG para ser jogada em equipe. Um
time de personagens, com diferentes habilidades, pode ser
montado para concluir desafios, enfrentando ogros, trolls,
gobblings, zumbis, etc.
1. Arqueiro
2. Guerreiro
3. Mago
4. Monstro
Os pontos de vida (PV) de um personagem definem sua resistência a golpes. Os pontos de magia
permitem ao personagem usar magias utilizando estes pontos. Abaixo, a definição de PV e PM
máximos:
Os pontos de experiência (PE) servem para fazer um personagem passar para o próximo nível. A
cada nível os pontos de experiência voltam a zero e são necessários mais pontos para subir de nível.
PE aumenta quando um personagem inimigo é derrotado, pela seguinte equação:
Para subir de nível, é necessário ter uma quantia de PE específica, definida pela fórmula:
6. Batalhas
Deve ser possível travar uma batalha entre, no máximo, 3 personagens heróis contra n inimigos. Os
três heróis devem ser escolhidos pelo usuário, entre guerreiro, arqueiro e mago. O usuário deve
digitar o nome e escolher a classe. Os inimigos podem ter qualquer classe e serão, inicialmente,
controlados pelo usuário (não há necessidade de implementar uma IA para controlar os inimigos).
Ao iniciar a batalha, o jogo deve exibir as informações dos dois times, com ID, nome, Classe, PV,
PM, Nível do personagem e tempo de espera. No momento zero, ao início do jogo, todos os
personagens terão tempo de espera igual a zero. Dessa forma, todos tem uma chance de atacar nesse
momento. Assim, deve-se sortear qual entre todos os personagens ataca primeiro.
Ao escolher qual personagem ataca, deve-se exibir a lista de suas habilidades, com nome, PM
necessário, dano que causa, tempo de espera que ela causa e quem/quantos ela afeta. Como cada
habilidade tem um tempo de espera, quando um personagem ataca, seu tempo de espera será
modificado para o tempo da habilidade usada. Ele deve ficar sem atacar até que seu tempo de
descanso atinja zero (0) novamente. A cada turno, o tempo de descanso é reduzido em 1. Se
ninguém puder atacar, o tempo de todos é reduzido em um e o turno se passa sem que ninguém
ataque, até que alguém atinja tempo zero (0). Turnos silenciosos não precisam ser notificados na
tela. Se por acaso dois ou mais personagens puderem atacar no mesmo instante, um sorteio é feito
para decidir qual deles irá atacar primeiro.
Uma vez atordoado (PV = 0), um personagem não pode atacar. Pontos de experiência vão para
todos os membros do time vencedor, incluindo aqueles que terminarem atordoados. Através de
um arquivo chamado jogo.txt serão definidas as equipes inimigas e uma descrição da fase, onde
cada conjunto desses define uma etapa do jogo. O formato do arquivo será:
Exemplo de Arquivo
Ogro Monstro 1
fase Um grupo de alunos caminhava tranquilamente pelo campus, quando se deparam com uma
criatura estranha. Depois de um grito horrendo, ela para cima dos alunos. É hora de
usar suas habilidades para derrotar a criatura!
Gobbling Monstro 1
ZumbiGerreiro Guerreio 2
fase Após derrotar o Ogro, o grupo segue em direção ao RU. Lá se deparam com duas
criaturas…
A cada vez que a palavra “fase” é encontrada no arquivo game.txt, a lista de inimigos é fechada
para uma batalha ser travada. Dessa forma, é possível criar n batalhas em um jogo, com inimigos de
diversas classes e níveis em cada batalha. Deve-se ter o cuidado de não colocar quantidade e nível
dos inimigos que não condizem com o nível dos aliados. Testes devem ser feitos para conferir o
balanceamento de cada batalha.
Dica: Para facilitar os testes, recomenda-se que as primeiras linhas do arquivo texto apresentem os
dados dos heróis do jogo, evitando que seja necessário incluir estes dados em toda execução dos
testes.
7. O Projeto
O projeto define um conjunto de classes mínimo, que devem ser implementadas conforme as
descrições a seguir. Caso julgue necessário, é possivel utilizar outras classes de objetos, desde que
elas não alterem a concepção do projeto definido pelo conjunto de classes mínimo.
Naturalmente, os métodos que manipulam estes atributos devem estar implementados nesta classe,
entre eles um método para computar o ganho de pontos de experiência e realizar a subida de nível
quando possível, um método para atacar um inimigo, um método para atacar uma equipe (pois
existem habilidades como o "grito atordoante" do monstro, que atingem todos os adversários) e um
método para registrar o dano sofrido.
Esta classe é abstrata, estende a classe Personagem e mantém atributos para forca, agilidade,
inteligencia e um conjunto/coleção de objetos da classe Habilidade. O método construtor desta
classe deve receber como parâmetro valores para força, agilidade e inteligência.
Estas classes estendem a classe 'Classe' de personagens, implementando um método construtor que
inicializa os atributos de força, agilidade, inteligência e adiciona as habilidades do personagem, de
acordo com os quadros de cada personagem, que foram apresentados anteriormente.
Esta classe define os atributos e métodos para caracterizar as habilidades dos personagens do jogo
(agrega habilidades). Os atributos(privados) que devem estar nesta classe são:
Esta classe define um conjunto de atributos (privados), que referem-se aos pesos associados a forca,
agilidade, inteligencia, presentes nas fórmulas apresentadas nos quadros que definem as classes de
personagens.
A única classe que pede entrada de dados e exibe mensagens na tela é a Jogo, que controlará o jogo.
A classe principal, que pode se chamar DungeonClash, apenas deve chamar um objeto de Jogo no
método main. Reforçando: Nenhuma classe pede entrada ou exibe saída em seus métodos, com
exceção da classe Jogo. Dessa forma as classes que tratam os personagens (classes de dados)
ficarão genéricas e podem ser facilmente adaptadas para um projeto com uma interface visual
diferente.
Da Avaliação
Como resultados desse trabalho, deverão ser entregues a implementação (código fonte compilável,
representando 80% da nota) e um relatório (representando 20% da nota).
Importante: Os trabalhos deverão ser apresentados durante os horários das aulas da última semana
do semestre (12 a 13 de março). Trabalhos que não forem apresentados ou que não compilarem,
não serão avaliados!
Atividade Extra: A implementação de uma interface gráfica funcional somará 2 pontos aos 9
pontos mencionados anteriormente, ou seja, para atingir os 10 pontos, é necessário implementar
uma interface gráfica. O ponto excedente a 10 poderá ser somado a nota de uma das provas. Para se
considerada uma interface gráfica válida, é necessário que sejam utilizados controladores de layout,
botões, paineis com imagens, caixas de texto e labels.
Dos Grupos
Da Entrega do Trabalho
Código de Honra
O trabalho deve ser implementado na sua totalidade, sem uso de código de outros (colegas ou não).
O trabalho enviado deve representar um esforço honesto em resolver o problema - isto é, não é algo
"pela metade", que não implementa funcionalidades essenciais. Violações a esta conduta serão
penalizadas e o violador não só terá nota nula neste trabalho, ficando portanto sem parte da nota da
disciplina. Os plágios estão sujeitos a sanções administrativas pelo colegiado do curso.
OBSERVAÇÃO: Este documento poderá ser alterado em sala de aula ou e-aula, sem aviso
prévio. Portanto, compareçam às aulas e visualizem esse documento no site sempre que
possível.