Trilhas
/
Java
Java
/
Exercícios
/
A infiltração de Annalyn
A infiltração de Annalyn

A infiltração de Annalyn

Exercício de aprendizagem

Introdução

Booleanos

Booleanos em Java são representados pelo tipo boolean, cujos valores podem ser true ou false.

Java suporta três operadores booleanos:

  • ! (NOT): inverte o valor booleano
  • && (AND): recebe dois booleanos e retorna true se ambos forem true
  • || (OR): retorna true se qualquer 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, você vai implementar a lógica da missão de um novo jogo de RPG que um amigo está desenvolvendo. A personagem principal do jogo é Annalyn, uma garota corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: seu melhor amigo foi sequestrado enquanto procurava bagas na floresta. Annalyn vai tentar encontrar e resgatar seu amigo, podendo levar seu cão junto na missão.

Depois de algum tempo seguindo a trilha, Annalyn descobre o acampamento onde seu amigo está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.

Depois de encontrar os sequestradores, Annalyn pensa em quais das ações a seguir ela pode realizar:

  • Ataque rápido: um ataque rápido pode ser feito se o cavaleiro estiver dormindo, pois ele leva tempo para vestir a armadura, o que o deixa vulnerável.
  • Espionar: o grupo pode ser espionado se pelo menos um deles estiver acordado. Caso contrário, espionar é perda de tempo.
  • Sinalizar o prisioneiro: pode-se sinalizar ao prisioneiro usando sons de pássaros se o prisioneiro estiver acordado e o arqueiro estiver dormindo. Os arqueiros são treinados em sinais com pássaros e poderiam interceptar a mensagem se estivessem acordados.
  • Libertar o prisioneiro: Annalyn pode tentar se esgueirar para dentro do acampamento para libertar o prisioneiro. Isso é arriscado e só pode dar certo de uma das duas maneiras:
    • Se Annalyn estiver com seu cão de estimação, ela pode resgatar o prisioneiro se o arqueiro estiver dormindo. O cavaleiro tem medo do cão e o arqueiro não terá tempo de se preparar antes que Annalyn e o prisioneiro consigam escapar.
    • Se Annalyn não estiver com seu cão de estimação, ela e o prisioneiro terão que ser muito sorrateiros! Annalyn pode libertar o prisioneiro se ele estiver acordado e tanto o cavaleiro quanto o arqueiro estiverem dormindo. No entanto, se o prisioneiro estiver dormindo, ele não pode ser resgatado, pois levaria um susto com a aparição repentina de Annalyn e acordaria o cavaleiro e o arqueiro.

Você tem quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis com base no estado dos três personagens na floresta e na presença ou não do cão de estimação de Annalyn.

1. Verificar se um ataque rápido pode ser feito

Implemente o método (static) AnnalynsInfiltration.canFastAttack(), que recebe um valor booleano indicando se o cavaleiro está acordado. Esse método retorna true se um ataque rápido puder ser feito com base no estado do cavaleiro. Caso contrário, retorna false:

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

2. Verificar se o grupo pode ser espionado

Implemente o método (static) AnnalynsInfiltration.canSpy(), que recebe três valores booleanos indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. O método retorna true se o grupo puder ser espionado com base no estado dos três personagens. Caso contrário, retorna false:

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

3. Verificar se é possível sinalizar ao prisioneiro

Implemente o método (static) AnnalynsInfiltration.canSignalPrisoner(), que recebe dois valores booleanos indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. O método retorna true se for possível sinalizar ao prisioneiro com base no estado dos dois personagens. Caso contrário, retorna false:

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

4. Verificar se o prisioneiro pode ser libertado

Implemente o método (static) AnnalynsInfiltration.canFreePrisoner(), que recebe quatro valores booleanos. Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. O último parâmetro indica se o cão de estimação de Annalyn está presente. O método retorna true se o prisioneiro puder ser libertado com base no estado dos três personagens e na presença do cão de estimação de Annalyn. Caso contrário, retorna false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar via GitHub O link abre em uma nova janela ou aba
Java Exercism

Tudo pronto para começar A infiltração de Annalyn?

Crie sua conta no Exercism para aprender e dominar Java com 26 conceitos158 exercícios e mentoria humana de verdade, tudo de graça.