El tipo bool (abreviatura de Boolean, el valor booleano) solo tiene dos valores: true y false.
Los valores literales true y false no distinguen entre mayúsculas y minúsculas en el código.
<?php
$value_is_true = true;
$value_is_false = false;
Los valores Boolean se usan a menudo en expresiones lógicas como resultado de un operador y después en estructuras de control.
Hay varios operadores lógicos:
!$a: devuelve true si $a no es true
$a && $b: devuelve true si $a y $b son ambos true
$a || $b: devuelve true si $a o $b son true
Existen los operadores and y or, que son complementarios de && y || respectivamente.
No se comportan igual que && y || y pueden producir resultados inesperados, por lo que se desaconseja su uso.
En este ejercicio, implementarás la lógica de la misión de un nuevo juego de rol que está desarrollando un amigo. La protagonista del juego es Annalyn, una chica valiente que tiene un perro fiero y leal. Por desgracia, la tragedia se cierne sobre ella: su mejor amiga ha sido secuestrada mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amiga, llevando consigo a su perro si así lo desea.
Después de pasar un tiempo siguiendo el rastro de su mejor amiga, encuentra el campamento en el que está encerrada. Resulta que hay dos secuestradores: un poderoso caballero y un astuto arquero.
Una vez encontrados los secuestradores, Annalyn se plantea cuáles de las siguientes acciones puede llevar a cabo:
Tienes cuatro tareas: implementar la lógica para determinar si las acciones anteriores están disponibles según el estado de los tres personajes que se encuentran en el bosque y según si el perro de Annalyn está presente o no.
Implementa una función llamada canFastAttack que recibe un valor Boolean que indica si el caballero está despierto.
La función devuelve true si la acción «ataque rápido» está disponible según el estado del personaje.
De lo contrario, devuelve false:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
Implementa una función llamada canSpy que recibe tres valores Boolean, que indican si el caballero, el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «espiar» está disponible según el estado de los personajes.
De lo contrario, devuelve 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 una función llamada canSignal que recibe dos valores Boolean, que indican si el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «señalizar a la prisionera» está disponible según el estado de los personajes.
De lo contrario, devuelve false:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
Implementa una función llamada canLiberate que recibe cuatro valores Boolean.
Los tres primeros parámetros indican si el caballero, el arquero y la prisionera, respectivamente, están despiertos.
El último parámetro indica si el perro de Annalyn está presente.
La función devuelve true si la acción «liberar a la prisionera» está disponible según el estado de los personajes y la presencia del perro de Annalyn.
De lo contrario, devuelve 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
Regístrate en Exercism para aprender y dominar PHP con 11 conceptos122 ejercicios y mentoría humana real, todo gratis.