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

A infiltração de Annalyn

Exercício de aprendizagem

Introdução

Um Boolean representa um de dois valores: true ou false. Operadores lógicos (!, &&, ||) costumam ser usados com valores Boolean e retornam um valor Boolean.

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 cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: seu melhor amigo foi sequestrado enquanto procurava frutas na floresta. Annalyn vai tentar encontrar e libertar seu melhor amigo, podendo levar o cachorro com ela nessa missão.

Depois de passar um tempo seguindo o rastro de seu melhor amigo, ela encontra o acampamento onde ele está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.

Depois de encontrar os sequestradores, Annalyn considera quais das seguintes ações ela pode realizar:

  • Ataque Rápido: um ataque rápido pode ser feito se o cavaleiro estiver dormindo, já que ele demora para vestir a armadura e ficará vulnerável.
  • Espionar: o grupo pode ser espionado se pelo menos um deles estiver acordado. Caso contrário, espionar é perda de tempo.
  • Sinalizar para o prisioneiro: o prisioneiro pode receber um sinal usando sons de pássaros se o prisioneiro estiver acordado e o arqueiro estiver dormindo, já que arqueiros são treinados em sinais com pássaros e poderiam interceptar a mensagem.
  • Libertar o prisioneiro: Annalyn pode tentar entrar escondida no acampamento para libertar o prisioneiro. É uma coisa arriscada e só pode dar certo de duas maneiras:
    • Se Annalyn estiver com o cachorro, ela pode resgatar o prisioneiro se o arqueiro estiver dormindo. O cavaleiro tem medo do cachorro e o arqueiro não terá tempo de se preparar antes que Annalyn e o prisioneiro escapem.
    • Se Annalyn não estiver com o cachorro, ela e o prisioneiro precisam ser muito furtivos! Annalyn pode libertar o prisioneiro se o prisioneiro estiver acordado e o cavaleiro e o arqueiro estiverem ambos dormindo, mas se o prisioneiro estiver dormindo ele não pode ser resgatado: o prisioneiro se assustaria 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 encontrados na floresta e se o cachorro de estimação de Annalyn está presente ou não.

1. Verifique se a ação 'Ataque Rápido' é possível

Implemente uma função chamada canExecuteFastAttack que recebe um valor Boolean que indica se o cavaleiro está acordado. Essa função retorna true se a ação 'Ataque Rápido' estiver disponível com base no estado do personagem. Caso contrário, retorna false:

const knightIsAwake = true;
canExecuteFastAttack(knightIsAwake);
// => false

2. Verifique se a ação 'Espionar' é possível

Implemente uma função chamada canSpy que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna true se a ação 'Espionar' estiver disponível com base no estado dos personagens. Caso contrário, retorna false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Verifique se a ação 'Sinalizar para o prisioneiro' é possível

Implemente uma função chamada canSignalPrisoner que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna true se a ação 'Sinalizar para o prisioneiro' estiver disponível com base no estado dos personagens. Caso contrário, retorna false:

const archerIsAwake = false;
const prisonerIsAwake = true;
canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Verifique se a ação 'Libertar o prisioneiro' é possível

Implemente uma função chamada canFreePrisoner que recebe quatro valores Boolean. 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 cachorro de estimação de Annalyn está presente. A função retorna true se a ação 'Libertar o prisioneiro' estiver disponível com base no estado dos personagens e na presença do cachorro de estimação de Annalyn. Caso contrário, ela retorna false:

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

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

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.