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

A infiltração de Annalyn

Exercício de aprendizagem

Introdução

Em Cairo, os Booleanos são representados pelo tipo Boolean predeclarado bool, cujos valores podem ser true ou false.

let speeding = true;   // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false' 

Cairo dá suporte a três operadores lógicos que avaliam expressões e resultam em valores Booleanos, retornando true ou false.

Operador O que significa
&& (e) É verdadeiro se as duas afirmações forem verdadeiras.
|| (ou) É verdadeiro se pelo menos uma afirmação for verdadeira.
! (não) É verdadeiro apenas se a afirmação for falsa.

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 a trilha do seu melhor amigo, ela encontra o acampamento onde ele está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.

Tendo encontrado os sequestradores, Annalyn considera em quais das seguintes ações ela pode se envolver:

  • Ataque rápido: um ataque rápido pode ser feito se o cavaleiro estiver dormindo, pois ele leva tempo para vestir a armadura, então 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: é possível sinalizar para o prisioneiro usando sons de pássaros se o prisioneiro estiver acordado e o arqueiro estiver dormindo, pois arqueiros são treinados em sinalização com pássaros e poderiam interceptar a mensagem.
  • Libertar o prisioneiro: Annalyn pode tentar se esgueirar para dentro do acampamento para libertar o prisioneiro. Isso é arriscado e só pode dar certo de duas maneiras:
    • Se Annalyn estiver com seu 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 consigam escapar.
    • Se Annalyn não estiver com o cachorro, ela e o prisioneiro precisam ser muito sorrateiros! Annalyn pode libertar o prisioneiro se o prisioneiro estiver acordado e o cavaleiro e o arqueiro estiverem dormindo, mas se o prisioneiro estiver dormindo não dá para resgatá-lo: o prisioneiro se assustaria com o aparecimento repentino 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 Annalyn está presente ou não.

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

Defina a função can_fast_attack() que recebe um valor Boolean que indica se o cavaleiro está acordado. Essa função retorna true se um ataque rápido puder ser feito com base no estado do cavaleiro. Caso contrário, retorna false:

let knight_awake = true;
can_fast_attack(knight_awake); // false

2. Verifique se o grupo pode ser espionado

Defina a função can_spy() 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 o grupo puder ser espionado, com base no estado dos três personagens. Caso contrário, retorna false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true

3. Verifique se é possível sinalizar para o prisioneiro

Defina a função can_signal_prisoner() que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna true se for possível sinalizar para o prisioneiro, com base no estado dos dois personagens. Caso contrário, retorna false:

let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true

4. Verifique se o prisioneiro pode ser libertado

Defina a função can_free_prisoner() 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 Annalyn está presente. A função retorna true se o prisioneiro puder ser libertado com base no estado dos três personagens e na presença do cachorro de Annalyn. Caso contrário, ela retorna false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Editar via GitHub O link abre em uma nova janela ou aba
Cairo Exercism

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

Crie sua conta no Exercism para aprender e dominar Cairo com 25 conceitos68 exercícios e mentoria humana de verdade, tudo de graça.