Il tipo bool (abbreviazione di boolean) ha solo due valori: true e false.
Nel codice, i valori letterali true e false non distinguono tra maiuscole e minuscole.
<?php
$value_is_true = true;
$value_is_false = false;
I valori booleani sono spesso usati nelle espressioni logiche come risultato di un operatore, per poi essere usati nelle strutture di controllo.
Ci sono diversi operatori logici:
!$a: restituisce true se $a non è true
$a && $b: restituisce true se sia $a sia $b sono true
$a || $b: restituisce true se almeno uno tra $a e $b è true
Esistono un operatore and e un operatore or, complementari rispettivamente a && e ||.
Non hanno lo stesso comportamento di && e || e possono produrre risultati inattesi: per questo se ne sconsiglia l'uso.
In questo esercizio implementerai la logica delle missioni di un nuovo gioco di ruolo a cui sta lavorando un amico. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane da compagnia feroce e fedele. Purtroppo arriva la catastrofe: la sua migliore amica è stata rapita mentre cercava le bacche nel bosco. Annalyn proverà a trovare e liberare la sua migliore amica, portando con sé il cane, se vuole.
Dopo aver seguito per un po' le tracce della sua migliore amica, trova l'accampamento in cui è imprigionata. Scopre che i rapitori sono due: un cavaliere possente e un arciere astuto.
Avendo trovato i rapitori, Annalyn valuta quali delle seguenti azioni può intraprendere:
Hai quattro compiti: implementare la logica che determina se le azioni precedenti sono disponibili in base allo stato dei tre personaggi trovati nel bosco e alla presenza o meno del cane di Annalyn.
Implementa una funzione chiamata canFastAttack che riceve un valore booleano che indica se il cavaliere è sveglio.
Questa funzione restituisce true se l'azione «Attacco rapido» è disponibile in base allo stato del personaggio.
Altrimenti restituisce false:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
Implementa una funzione chiamata canSpy che riceve tre valori booleani, che indicano rispettivamente se il cavaliere, l'arciere e il prigioniero sono svegli.
La funzione restituisce true se l'azione «Spia» è disponibile in base allo stato dei personaggi.
Altrimenti restituisce 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 funzione chiamata canSignal che riceve due valori booleani, che indicano rispettivamente se l'arciere e il prigioniero sono svegli.
La funzione restituisce true se l'azione «Segnala il prigioniero» è disponibile in base allo stato dei personaggi.
Altrimenti restituisce false:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
Implementa una funzione chiamata canLiberate che riceve quattro valori booleani.
I primi tre parametri indicano rispettivamente se il cavaliere, l'arciere e il prigioniero sono svegli.
L'ultimo parametro indica se il cane di Annalyn è presente.
La funzione restituisce true se l'azione «Libera il prigioniero» è disponibile in base allo stato dei personaggi e alla presenza del cane di Annalyn.
Altrimenti restituisce 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
Iscriviti a Exercism per imparare e padroneggiare PHP con 11 concetti122 esercizi e il mentoring di persone reali, tutto gratis.