El tipo bool (abreviatura de 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 luego 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
Hay un operador and y un operador or, y son complementarios a && y || respectivamente.
No tienen el mismo comportamiento que && y || y pueden producir resultados inesperados, por lo que se desaconseja su uso.
En este ejercicio, implementarás la lógica de la búsqueda para un nuevo juego de rol que está desarrollando un amigo. La protagonista del juego es Annalyn, una chica valiente con un perro feroz y leal como mascota. Por desgracia, el desastre llega cuando su mejor amigo es secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amigo, y puede llevar a su perro con ella en esta misión.
Después de pasar un tiempo siguiendo el rastro de su mejor amigo, encuentra el campamento donde está encerrado. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
Una vez encontrados los secuestradores, Annalyn se pregunta cuál de las siguientes acciones puede realizar:
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 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.
Esta 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 el prisionero, 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 el prisionero, respectivamente, están despiertos.
La función devuelve true si la acción «Hacer señales al prisionero» 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 primeros tres parámetros indican si el caballero, el arquero y el prisionero, 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 al prisionero» 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.