O tipo bool (abreviação de booleano) tem apenas dois valores: true e false.
Os valores literais true e false não diferenciam maiúsculas de minúsculas no código.
<?php
$value_is_true = true;
$value_is_false = false;
Valores Boolean são usados com frequência em expressões lógicas como resultado de um operador e depois em estruturas de controle.
Existem vários operadores lógicos:
!$a: retorna true se $a não for true
$a && $b: retorna true se $a e $b forem ambos true
$a || $b: retorna true se $a ou $b forem true
Existem também os operadores and e or, que são complementares a && e ||, respectivamente.
Eles não têm o mesmo comportamento que && e || e podem produzir resultados inesperados, por isso seu uso não é recomendado.
Neste exercício, você vai implementar a lógica da missão de um novo 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, a tragédia acontece: seu melhor amigo foi sequestrado enquanto procurava frutas silvestres na floresta. Annalyn vai tentar encontrar e libertar seu melhor amigo, podendo levar o cão 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.
Tendo encontrado os sequestradores, Annalyn avalia em quais das ações a seguir ela pode se envolver:
Você tem quatro tarefas: implementar a lógica que determina se as ações acima estão disponíveis, com base no estado dos três personagens encontrados na floresta e na presença ou não do cão de estimação de Annalyn.
Implemente uma função chamada canFastAttack que recebe um valor boolean que indica se o cavaleiro está acordado.
A 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:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
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:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true
Implemente uma função chamada canSignal 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 ao prisioneiro' estiver disponível com base no estado dos personagens.
Caso contrário, retorna false:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
Implemente uma função chamada canLiberate 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 cão de estimação de Annalyn está presente.
A função retorna true se a ação 'Liberar o prisioneiro' estiver disponível com base no estado dos personagens e na presença do cão de estimação de Annalyn.
Caso contrário, retorna false:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
$is_knight_awake,
$is_archer_awake,
$is_prisoner_awake,
$is_dog_present
);
// => false
Crie sua conta no Exercism para aprender e dominar PHP com 11 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.