In Java i valori booleani sono rappresentati dal tipo boolean, i cui valori possono essere true oppure false.
Java supporta tre operatori booleani:
! (NOT): nega il valore booleano&& (AND): prende due valori booleani e restituisce true se sono entrambi true
|| (OR): restituisce true se almeno uno dei due valori booleani è true
!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
In questo esercizio implementerai la logica della missione per 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 il disastro: il suo migliore amico è stato rapito mentre cercava bacche nella foresta. Annalyn cercherà di trovare e salvare il suo amico, portando con sé il cane nella missione se lo desidera.
Dopo aver seguito le tracce per un po' di tempo, Annalyn scopre l'accampamento dove il suo amico è imprigionato. Scopre che i rapitori sono due: un cavaliere possente e un arciere astuto.
Una volta trovati i rapitori, Annalyn valuta quali delle seguenti azioni può intraprendere:
Hai quattro compiti: implementare la logica per determinare se le azioni sopra descritte sono disponibili in base allo stato dei tre personaggi nella foresta e alla presenza o meno del cane di Annalyn.
Implementa il metodo (static) AnnalynsInfiltration.canFastAttack(), che accetta un valore booleano che indica se il cavaliere è sveglio.
Il metodo restituisce true se è possibile effettuare un attacco rapido in base allo stato del cavaliere.
Altrimenti, restituisce false:
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
Implementa il metodo (static) AnnalynsInfiltration.canSpy(), che accetta tre valori booleani che indicano rispettivamente se il cavaliere, l'arciere e il prigioniero sono svegli.
Il metodo restituisce true se è possibile spiare il gruppo in base allo stato dei tre personaggi.
Altrimenti, restituisce false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
Implementa il metodo (static) AnnalynsInfiltration.canSignalPrisoner(), che accetta due valori booleani che indicano rispettivamente se l'arciere e il prigioniero sono svegli.
Il metodo restituisce true se è possibile segnalare al prigioniero in base allo stato dei due personaggi.
Altrimenti, restituisce false:
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
Implementa il metodo (static) AnnalynsInfiltration.canFreePrisoner(), che accetta 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.
Il metodo restituisce true se è possibile liberare il prigioniero in base allo stato dei tre personaggi e alla presenza del cane di Annalyn.
Altrimenti, restituisce false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.