Track
/
Java
Java
/
Esercizi
/
L'infiltrazione di Annalyn
L'infiltrazione di Annalyn

L'infiltrazione di Annalyn

Esercizio di apprendimento

Introduzione

Valori booleani

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

Esempi

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

Istruzioni

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:

  • Attacco rapido: un attacco rapido è possibile se il cavaliere dorme, perché gli serve tempo per indossare l'armatura e nel frattempo è vulnerabile.
  • Spionaggio: si può spiare il gruppo se almeno uno di loro è sveglio. Altrimenti, spiare è una perdita di tempo.
  • Segnalare il prigioniero: si può segnalare al prigioniero con richiami di uccelli se il prigioniero è sveglio e l'arciere dorme. Gli arcieri sono addestrati ai richiami degli uccelli e potrebbero intercettare il messaggio se sono svegli.
  • Liberare il prigioniero: Annalyn può tentare di intrufolarsi nell'accampamento per liberare il prigioniero. L'impresa è rischiosa e può riuscire solo in uno dei due modi seguenti:
    • Se Annalyn ha con sé il cane, può salvare il prigioniero se l'arciere dorme. Il cavaliere ha paura del cane e l'arciere non avrà il tempo di prepararsi prima che Annalyn e il prigioniero riescano a fuggire.
    • Se Annalyn non ha con sé il cane, allora lei e il prigioniero devono essere molto furtivi! Annalyn può liberare il prigioniero se il prigioniero è sveglio e sia il cavaliere che l'arciere dormono. Tuttavia, se il prigioniero dorme, non si può salvarlo: il suo arrivo improvviso lo spaventerebbe e sveglierebbe il cavaliere e l'arciere.

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.

1. Verifica se è possibile effettuare un attacco rapido

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

2. Verifica se è possibile spiare il gruppo

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

3. Verifica se è possibile segnalare al prigioniero

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

4. Verifica se è possibile liberare il prigioniero

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
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Java Exercism

Vuoi iniziare L'infiltrazione di Annalyn?

Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.