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. |
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:
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.
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
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
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
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
Crie sua conta no Exercism para aprender e dominar Cairo com 25 conceitos68 exercícios e mentoria humana de verdade, tudo de graça.