Lista 2
Recomendações Importantes
- A lista deve ser entregue até às 23:59:59 do dia 05/05.
- Deixe seus programas entendíveis. Imprima mensagens para auxiliar o usuário a utilizar o seu programa.
- Seja criativo. As mensagens do seu programa não necessitam estar iguais aos exemplos, a menos que seja especificado.
- A lista é individual, portanto não compartilhe seus códigos com outros alunos ou os coloque em locais públicos (Pastebin, Github).
- Não copie. Se for detectado cópia da internet ou de um colega, as LISTAS envolvidas serão completamente zeradas.
- Alguns exemplos aqui definidos podem apresentar comentários. Note que são apenas ilustrativos.
- A correção da Questão Desafio é booleana. Ou seja: você receberá o ponto extra do desafio caso a resposta esteja 100% correta. Qualquer erro, mesmo que seja em apenas um caso, invalidará a questão.
- Não é permitido o uso da API de Java ou bibliotecas externas, exceto quando permitido explicitamente na questão, na lista, ou autorizado por um monitor através da lista de email (Google Groups) da disciplina. Questões submetidas que violarem essa regra serão consideradas como não entregues.
- São permitidas nessa lista, para todas as questões:
- String
- Scanner
- Random
Questão 1 - Harrison Jones and The First Crusade
O grande conquistador, Sinbad, quer sua ajuda para fazer um simulador de dungeons e ajudar seu amigo Harrison Jones a chegar no tesouro agora que ele já não pode mais entrar nas dungeons. Para isso, com a experiência dele de 7 dungeons, ele memorizou os tipos de armadilhas e suas frequências de aparição. Com esses dados você irá fazer um programa que simule a dungeon e sirva para o usuário tentar chegar no tesouro vivo.
Instruções mais específicas :
- O mapa da dungeon terá dimensões 10x10.
- O personagem começa na posição (10,10)
- O tesouro fica fixo na posição (1,1)
- A movimentação será feita por : W ( Cima ), A ( Esquerda ), S ( Baixo ), D ( Direita ).
- O programa deverá aceitar as entradas de movimentação tanto maiúsculas quanto minúsculas.
- No final de cada movimentação deve ser imprimida a vida atual do jogador e o novo mapa.
- O personagem entra na dungeon com 3 poções, que recuperam 20 de vida cada, todavia as poções não podem ultrapassar a vida máxima. Para utilizar a poção o o programa deverá receber a entrada P ou p. Após utilizar a poção, não será necessário imprimir um novo mapa, só pedir uma nova direção ou item e imprimir sua nova vida atual.
- Qualquer outra entrada deverá ser considerada inválida e o programa deverá pedir uma nova entrada. Também não é permitido andar para fora do mapa, nesse caso também deverá ser pedida uma nova entrada.
- O mapa e o personagem deverão ser duas classes separadas do Main.
- O personagem terá os atributos : nome, poções e vida. O nome deverá ser pedido ao iniciar o programa.
- A vida máxima do personagem é igual a 100.
- O mapa fica para a sua implementação, pode escolher os atributos como quiser.
- Caso o personagem chegue no tesouro o programa deverá ser encerrado e imprimida uma mensagem de comemoração. Caso ele morra, será imprimida uma mensagem de derrota e também encerrará o programa.
Abaixo segue a tabela das armadilhas preparada por Sinbad para que você crie seu programa.
Exemplos de Mapa :
Questão 2 - Dragon Ball: A volta dos que não foram
Há um boato surgindo na Terra de que os vilões que um dia Goku derrotou encontraram um jeito de ressucitar. Para lidar com eles novamente, você deverá criar um programa que irá simular uma batalha contra eles. No programa, o usuário irá selecionar sua raça, distribuir seus atributos e selecionar suas técnicas. Após isso ele irá escolher as opções de simulação de batalha contra Freeza, Cell ou Majin Buu.
Cada raça tem seu diferencial no que cada atributo oferece para cada ponto distribuído. Além disso, Namek e Saiyan tem uma técnica exclusiva e passiva, para compensar isso, eles só poderão ter 3 técnicas e Humano terá 4 técnicas a sua escolha. A técnica especial de Namek é Regeneração, ao morrer a primeira vez num combate ele volta a vida com 50% da sua vida máxima. A técnica especial do Sayan é Super Sayan, a cada 25% do seu hp máximo perdido, ele aumenta seus atributos ataque e espirito em 25% mudando de forma.
Instruções mais Específicas.
- Você deverá criar as classes Personagem e Técnica.
- A classe Personagem terá pelo menos os atributos :
- Nome
- Raça
- Ataque
- Dano
- Espírito
- Ki
- Estamina
- Vida
- Técnica[4]
- O personagem começa por padrão com :
- 150 de dano.
- 300 de ki.
- 600 de vida.
- 0 nos outros atributos.
- O personagem começa com 100 pontos para distribuir entre Ataque, Espírito e Estamina.
- Uma atributo pode ter no máximo 50 pontos.
- A classe Técnica terá pelo mneos os atributos :
- Nome
- Custo
- Dano
- Após a criação do personagem o programa deverá imprimir as informações do personagem e um resultado do Scouter que segue a fórmula : Poder de Luta = Dano * 5,5 + Ki * 3,5 ( Caso o poder de luta ultrapasse 8.000 unidades, deverá ser impresso que o Scouter quebrou ).
- Após a impressão, o programa deverá irpara um menu com as opções :
- Batalhar com Freeza.
- Batalhar com Cell.
- Batalhar com Majin Buu.
- Sair.
- Ao escolher "sair", deverá ser impresso seu histórico de batalha, quantas vezes ganhou e perdeu contra cada oponente.
- Durante uma batalha, cada turno terá as possíveis ações :
- Ataque Normal ( 0,5 * dano )
- Técnica
- Ao selecionar a opção Técnica, deverá ir para outro menu com as 4 técnicas do personagem para escolher uma.
- Caso seja impossível utilizar uma técnica por falta de ki ou por não atender suas condições, deverá ser pedida uma nova ação para completar o turno.
- Após cada ação, deverá ser impresso o dano causado da ação e a vida atual dos jogadores.
- Os oponentes jogam aleatoriamente 40% de chance para um ataque e 60% de chance para uma técnica, dentro das técnicas a chance é igual para todas.
- Os oponentes em 40 pontos em todos os atributos e eles tem os mesmos efeitos que os atributo de um Humano.
- Todos os oponentes tem o efeito passivo de um Sayan.
Tabela de Atributos e seus Efeitos por Raça :
Lista de Técnicas para Criação de Personagem :
Oponentes :
- Freeza :
- Cell :
- Majin Buu :
Questão 3 - Lol Calculator
Peu é um exímio jogador de League of Legends e quis fazer um programinha para ajuda-lo no jogo. Porém, suas habilidades em programação não são lá muito boas, então ele pediu sua ajuda. Sua missão é fazer um programa que simule o dano de um Kha'Zix em um Rengar ou vice-versa. Porém, ambos com itens em seu inventário.
OBS.:
O máximo de itens que cada um pode carregar são 6, e se houver itens iguais, a passiva única deve ser considerada apenas UMA vez.
Não precisa se preocupar com a formatação de saída dos cálculos (NumberFormat).
-- Informações --
(DA= Dano de Ataque / PA= Penetração de Armadura / PV= Pontos de Vida)
Stats base do Rengar level 18:
Vida: 2116.0
Armadura: 85.4
Dano de Ataque: 111
Stats base do Kha'Zix level 18:
Vida: 2018.0
Armadura: 75.0
Dano de Ataque: 108
A fórmula para o MULTIPLICADOR da REDUÇÃO de dano baseado na armadura.
(100/(100 + V)) quando armor maior ou igual que 0.
(2-(100/100 - V)) quando armor menor que 0.
Onde V é o valor da armadura do oponente.
Ex.: 25 de armadura -> 0.8x do dano recebido.
100 de armadura -> 0.5x do dano recebido.
-25 de armadura -> 1.2x do dano recebido.
E a penetração de armadura reduz a armadura do inimigo antes do ataque ser feito.
Ex.: Rengar tem 85.4 de armadura, e o Kha tem 10% de penetração, logo, o Rengar terá 76.8 de armadura ao receber o ataque do Kha,
e se fosse 10 de PA o Rengar teria 75.4 de armadura ao receber o ataque.
Skills:
• Kha'Zix:
Ataque básico:
Dano físico: igual ao DA do campeão.
Taste Their Fear:
Dano físico: 170 + 120% do DA.
Void Spike:
Dano físico: 200 + 100% do DA.
Leap:
Dano físico: 205 + 20% do DA.
• Rengar:
Ataque básico:
Dano físico: igual ao DA do campeão.
Savagery:
Dano físico: 150 + 20% do DA.
Empowered Savagery:
Dano físico: 240 + 50% do DA.
Bola Strike:
Dano físico: 250 + 70% DA.
Itens:
Sword of the Occult:
+10 DA.
Passiva única: +5 DA por stack, e no máximo 20 stacks.
Quando tem 20 Stacks dá um bônus de 10% de PA.
B.F. Sword:
+50 DA.
The Bloodthirster:
+80 DA.
The Black Cleaver:
+50 DA.
Passíva única: +10 PA.
Blade of The Ruined King:
+25 DA.
Passiva única: + 8% da Vida do inimigo em DA.
The Brutalizer:
+25 DA.
Passiva única: +10 PA.
--
Chain Vest:
+40.0 de armadura.
Ninja Tabi:
+25.0 de armadura
Passíva única: bloqueia 10% extra de um ataque básico.
Randuin's Omen:
+70.0 de armadura.
+500 PV.
Thornmail:
+100.0 de armadura.
Seeker's Armguard:
+30.0 de armadura.
Passiva única: +0.5 armadura por stack. Máximo de 30 stacks.
Quando tem 30 stacks, bônus de 20% extra em um ataque básico.
Sunfire Cape:
+45.0 de armadura.
+450 PV.
A questão deve conter um menu, onde deve acabar somente quando o usuário pedir.
Modelo:
Olá invocador, escolha sua opção no menu: //Saída
1 - Fazer novo cálculo //Saída
2 - Sair //Saída
1 //Entrada do usuário
1 - Kha'Zix ataca e Rengar defende. //Saída
2 - Rengar ataca e Kha'Zix defende. //Saída
1 //Entrada do usuário
Digite quantos itens Kha'Zix possui em seu inventário. //Saída
2 //Entrada do usuário
Digite, agora, quais são estes itens. //Saída
1 - Sword of the Occult //Saída
2 - B.F. Sword //Saída
3 - The Bloodthirster //Saída
4 - The Black Cleaver //Saída
5 - Blade of The Ruined King //Saída
6 - The Brutalizer //Saída
2 //Entrada
B.F Sword adicionada(o). //Saída
1 //Entrada
Quantos stacks a Sword of the Occult possui? //Saída
10 //Entrada
Sword of the Occult adicionada(o). //Saída
Digite quantos itens Rengar possui em seu inventário. //Saída
1 // Entrada
Digite, agora, quais são estes itens. //Saída
1 - Chain Vest //Saída
2 - Ninja Tabi //Saída
3 - Randuin's Omen //Saída
4 - Thornmail //Saída
5 - Seeker's Armguard //Saída
6 - Sunfire Cape //Saída
1 //Entrada
Chain Vest adicionada(o). //Saída
4 //Entrada
Thornmail adicionado(a). //Saída
Digite agora quantas vezes o Kha'Zix vai atacar. //Saída
2 //Entrada
Digite que(ais) ataque(s) ele vai utilizar. //Saída
1 - Ataque básico //Saída
2 - Taste Their Fear //Saída
3 - Void Spike //Saída
4 - Leap //Saída
2 //Entrada
O dano causado pelo Taste Their Fear do Kha'Zix foi de 129.48 PV no Rengar. //Saída
3 //Entrada
O dano causado pelo Void Spike do Kha'Zix foi de 125.4 PV no Rengar. //Saída
O dano total causado pelo Kha'Zix no Rengar foi de 254.88, resultando num restante de 1861.12 de vida no Rengar. //Saída
Olá invocador, escolha sua opção no menu: //Saída
1 - Fazer novo cálculo //Saída
2 - Sair //Saída
2 //Entrada
Até a próxima invocador. //Saída
Questão 4 - A obra do mestre Picasso
Ano de 2050, Photoshop caiu em desuso e os designers do CAC requisitaram um sistema que simule uma paleta de cores. Dada uma matriz mxn, com números em cada célula. É feita então uma mistura de 3 células, após isso, indique qual cor do arco-íris é formada. Cores não encontradas na tabela devem ser listadas como BLACK - não manjamos de design =P. É obrigatório o tratamento das cores como classes/objetos, com atributos R, G e B, explorando os conceitos usados em sala. Uma escolha 0 0 encerra o programa. Bronca pra tu tatu.
Ex:
3x4 // mxn, entrada do usuário
255 0 127 75 //entrada do usuário
130 143 255 12 //entrada do usuário
100 20 255 10 //entrada do usuário
//escolha
1 1 //entrada do usuário
1 2 //entrada do usuário
1 2 //entrada do usuário
//saída
Red (255,0,0)
//escolha
1 1 //entrada do usuário
2 2 //entrada do usuário
1 1 //entrada do usuário
Black (255, 143, 255) //saída
0 0 // entrada do usuário, encerra o programa
Questão 5 - Virado na Jubreca. Cowabunga!!!
Jubreca é uma tartaruga treinada pelo IBAMA responsável por testes de software, atualmente ela trabalha num projeto chamado HitOrQuit. Neste projeto, Jubreca caminha sobre um campo e ao receber o comando "hit" do usuário, pinta o número correspondente a quantas vezes o comando foi recebido naquela célula. Ao receber o comando "quit" Jubreca irá imprimir o texto formado pelas letras marcadas, repetindo-as caso o "hit" seja maior que 1. Ps: não deve ser permitida a execução comandos que não sejam os listados, trate esses casos.
Lista de comandos:
w = pra cima Jubreca!
a = pra esquerda Jubreca!
s = pra baixo Jubreca!
d = pra direita Jubreca!
hit = marque mais uma vez essa célula
quit = imprima a saída resultante
Ex:
4x5 // entrada do usuário, Dimensões do campo
12345 // entrada do usuário,Campo
qwert // entrada do usuário, Campo
asdfg // entrada do usuário, Campo
zxcvb //// entrada do usuário, Campo
hit d d hit hit s a hit w hit hit quit //// entrada do usuário, comandos
133w22 // Saída
Questão 6 - Jogo dos Bixos - DESAFIO
Tiger, senhor da inexplorada floresta do CAC, está trazendo para os arredores do CIN um novo jogo, no qual para ser vencedor o jogador precisa dizer qual a maior permutação de um número aleatório dado por Tiger. Você, jovem gafanhoto conhecedor das magias do cogumelo de java, irá fazer um programa que responda corretamente todas as vezes. Dey, afim de quebrar o jogo, decidiu participar e para isso lhe deu os seguintes dados:
Exs:
Para parar o programa digite quit
519 // Entrada
951 // Saída -------------- 003 // Entrada 300 // Saída -------------- -20 // Entrada -02 // Saída
quit //Entrada Até a próxima.//Saída