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

L'infiltrazione di Annalyn

Esercizio di apprendimento

Introduzione

Un booleano rappresenta uno di due valori: true o false. Gli operatori logici (!, &&, ||) si usano in genere con valori booleani e restituiscono un valore booleano.

Istruzioni

In questo esercizio implementerai la logica delle missioni per un nuovo gioco di ruolo che un amico sta sviluppando. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane fedele e feroce. Purtroppo arriva la catastrofe: il suo migliore amico è stato rapito mentre cercava bacche nel bosco. Annalyn cercherà di trovare e liberare il suo migliore amico, portando eventualmente con sé il cane in questa missione.

Dopo aver seguito per un po' le tracce del suo migliore amico, trova l'accampamento in cui è imprigionato. Scopre che i rapitori sono due: un cavaliere possente ed un arciere astuto.

Trovati i rapitori, Annalyn valuta quali delle seguenti azioni può intraprendere:

  • Attacco rapido: si può sferrare un attacco rapido se il cavaliere è addormentato, dato che gli serve tempo per indossare l'armatura e quindi sarà vulnerabile.
  • Spia: si può spiare il gruppo se almeno uno di loro è sveglio. Altrimenti, spiare è una perdita di tempo.
  • Segnala al prigioniero: si può segnalare al prigioniero usando versi di uccelli se il prigioniero è sveglio e l'arciere è addormentato, dato che gli arcieri sono addestrati ai segnali degli uccelli e potrebbero intercettare il messaggio.
  • Libera il prigioniero: Annalyn può provare a intrufolarsi nell'accampamento per liberare il prigioniero. È una cosa rischiosa e può riuscire solo in uno dei due modi seguenti:
    • Se Annalyn ha con sé il suo cane, può salvare il prigioniero se l'arciere è addormentato. Il cavaliere ha paura del cane e l'arciere non farà in tempo a prepararsi prima che Annalyn ed il prigioniero riescano a fuggire.
    • Se Annalyn non ha il cane, allora lei ed il prigioniero devono essere molto furtivi! Annalyn può liberare il prigioniero se il prigioniero è sveglio ed il cavaliere e l'arciere sono entrambi addormentati, ma se il prigioniero è addormentato non può essere salvato: verrebbe spaventato dall'apparizione improvvisa di Annalyn e sveglierebbe il cavaliere e l'arciere.

Hai quattro compiti: implementare la logica che determina se le azioni descritte sono disponibili in base allo stato dei tre personaggi trovati nel bosco ed alla presenza o meno del cane di Annalyn.

1. Verifica se l'azione "Attacco rapido" è possibile

Implementa una funzione chiamata canExecuteFastAttack che prende un valore booleano che indica se il cavaliere è sveglio. La funzione restituisce true se l'azione "Attacco rapido" è disponibile in base allo stato del personaggio. Altrimenti restituisce false:

const knightIsAwake = true;
canExecuteFastAttack(knightIsAwake);
// => false

2. Verifica se l'azione "Spia" è possibile

Implementa una funzione chiamata canSpy che prende tre valori booleani, che indicano rispettivamente se il cavaliere, l'arciere ed il prigioniero sono svegli. La funzione restituisce true se l'azione "Spia" è disponibile in base allo stato dei personaggi. Altrimenti restituisce false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Verifica se l'azione "Segnala al prigioniero" è possibile

Implementa una funzione chiamata canSignalPrisoner che prende due valori booleani, che indicano rispettivamente se l'arciere ed il prigioniero sono svegli. La funzione restituisce true se l'azione "Segnala al prigioniero" è disponibile in base allo stato dei personaggi. Altrimenti restituisce false:

const archerIsAwake = false;
const prisonerIsAwake = true;
canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Verifica se l'azione "Libera il prigioniero" è possibile

Implementa una funzione chiamata canFreePrisoner che prende quattro valori booleani. I primi tre parametri indicano rispettivamente se il cavaliere, l'arciere ed 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:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
const petDogIsPresent = false;
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
JavaScript Exercism

Vuoi iniziare L'infiltrazione di Annalyn?

Iscriviti a Exercism per imparare e padroneggiare JavaScript con 37 concetti159 esercizi e il mentoring di persone reali, tutto gratis.