Percursos
/
Java
Java
/
Exercícios
/
A infiltração da Annalyn
A infiltração da Annalyn

A infiltração da Annalyn

Exercício de aprendizagem

Introdução

Booleanos

Os booleanos em Java são representados pelo tipo boolean, que pode assumir os valores true ou false.

O Java suporta três operadores booleanos:

  • ! (NOT): nega o booleano
  • && (AND): recebe dois booleanos e devolve true se ambos forem true
  • || (OR): devolve true se um dos dois booleanos for true

Exemplos

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

Instruções

Neste exercício, vais implementar a lógica da missão de um novo jogo de RPG que um amigo está a desenvolver. A personagem principal do jogo é a Annalyn, uma rapariga corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: o seu melhor amigo foi raptado enquanto procurava frutos silvestres na floresta. A Annalyn vai tentar encontrar e resgatar o amigo, podendo levar o cão com ela na missão.

Depois de algum tempo a seguir o rasto, a Annalyn descobre o acampamento onde o amigo está preso. Acontece que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.

Depois de encontrar os raptores, a Annalyn pensa em quais das seguintes ações pode realizar:

  • Ataque rápido: é possível fazer um ataque rápido se o cavaleiro estiver a dormir, pois ele leva tempo a vestir a armadura, o que o deixa vulnerável.
  • Espiar: é possível espiar o grupo se pelo menos um deles estiver acordado. Caso contrário, espiar é uma perda de tempo.
  • Sinalizar o prisioneiro: é possível sinalizar o prisioneiro com sons de aves se o prisioneiro estiver acordado e o arqueiro estiver a dormir. Os arqueiros são treinados em sinalização com aves e podem intercetar a mensagem se estiverem acordados.
  • Libertar o prisioneiro: a Annalyn pode tentar entrar furtivamente no acampamento para libertar o prisioneiro. Isto é arriscado e só pode resultar de uma de duas formas:
    • Se a Annalyn tiver o cão, pode resgatar o prisioneiro se o arqueiro estiver a dormir. O cavaleiro tem medo do cão e o arqueiro não terá tempo de se preparar antes de a Annalyn e o prisioneiro conseguirem escapar.
    • Se a Annalyn não tiver o cão, ela e o prisioneiro têm de ser muito furtivos! A Annalyn pode libertar o prisioneiro se o prisioneiro estiver acordado e tanto o cavaleiro como o arqueiro estiverem a dormir. No entanto, se o prisioneiro estiver a dormir, não pode ser resgatado, pois o prisioneiro assustar-se-ia com o aparecimento súbito da Annalyn e acordaria o cavaleiro e o arqueiro.

Tens quatro tarefas: implementar a lógica que determina se as ações acima estão disponíveis, com base no estado das três personagens na floresta e na presença ou não do cão da Annalyn.

1. Verifica se é possível fazer um ataque rápido

Implementa o método (static) AnnalynsInfiltration.canFastAttack(), que recebe um valor Boolean que indica se o cavaleiro está acordado. Este método devolve true se for possível fazer um ataque rápido com base no estado do cavaleiro. Caso contrário, devolve false:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

2. Verifica se é possível espiar o grupo

Implementa o método (static) AnnalynsInfiltration.canSpy(), que recebe três valores Boolean que indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados. O método devolve true se for possível espiar o grupo com base no estado das três personagens. Caso contrário, devolve false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Verifica se é possível sinalizar o prisioneiro

Implementa o método (static) AnnalynsInfiltration.canSignalPrisoner(), que recebe dois valores Boolean que indicam se o arqueiro e o prisioneiro, respetivamente, estão acordados. O método devolve true se for possível sinalizar o prisioneiro com base no estado das duas personagens. Caso contrário, devolve false:

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Verifica se é possível libertar o prisioneiro

Implementa o método (static) AnnalynsInfiltration.canFreePrisoner(), que recebe quatro valores Boolean. Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados. O último parâmetro indica se o cão da Annalyn está presente. O método devolve true se for possível libertar o prisioneiro com base no estado das três personagens e na presença do cão da Annalyn. Caso contrário, devolve false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar A infiltração da Annalyn?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.