O tipo bool (abreviação de booleano) tem apenas dois valores: true e false.
Os valores literais true e false não distinguem maiúsculas de minúsculas no código.
<?php
$value_is_true = true;
$value_is_false = false;
Os valores Boolean são frequentemente usados em expressões lógicas como resultado de um operador e depois usados em estruturas de controlo.
Existem vários operadores lógicos:
!$a: devolve true se $a não for true
$a && $b: devolve true se $a e $b forem ambos true
$a || $b: devolve true se $a ou $b forem true
Existe um operador and e um operador or e são complementares a && e ||, respetivamente.
Não têm o mesmo comportamento que && e || e podem produzir resultados inesperados, pelo que o seu uso é desaconselhado.
Neste exercício, vais implementar a lógica da missão de um novo jogo de RPG que um amigo está a desenvolver. A personagem principal do jogo é a Annalyn, uma rapariga corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: a melhor amiga dela foi raptada enquanto procurava bagas na floresta. A Annalyn vai tentar encontrar e libertar a melhor amiga, podendo levar o cão com ela nesta missão.
Depois de algum tempo a seguir o rasto da melhor amiga, encontra o acampamento onde ela está presa. Acontece que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.
Depois de encontrar os raptores, a Annalyn pondera quais das seguintes ações pode realizar:
Tens quatro tarefas: implementar a lógica que determina se as ações acima estão disponíveis, com base no estado das três personagens encontradas na floresta e na presença ou não do cão da Annalyn.
Implementa uma função chamada canFastAttack que recebe um valor booleano que indica se o cavaleiro está acordado.
Esta função devolve true se a ação «Ataque rápido» estiver disponível, com base no estado da personagem.
Caso contrário, devolve false:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
Implementa uma função chamada canSpy que recebe três valores booleanos, que indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se a ação «Espiar» estiver disponível, com base no estado das personagens.
Caso contrário, devolve 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
Implementa uma função chamada canSignal que recebe dois valores booleanos, que indicam se o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se a ação «Sinalizar o prisioneiro» estiver disponível, com base no estado das personagens.
Caso contrário, devolve false:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
Implementa uma função chamada canLiberate que recebe quatro valores booleanos.
Os primeiros três parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
O último parâmetro indica se o cão da Annalyn está presente.
A função devolve true se a ação «Libertar o prisioneiro» estiver disponível, com base no estado das personagens e na presença do cão da Annalyn.
Caso contrário, devolve 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
Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.