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

L'infiltrazione di Annalyn

Esercizio di apprendimento

Introduzione

I booleani in Cairo sono rappresentati dal tipo booleano predefinito bool, i cui valori possono essere true o false.

let speeding = true;   // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false' 

Cairo supporta tre operatori logici che possono ridurre le espressioni a valori booleani, restituendo true o false.

Operatore Cosa significa
&& (and) È vero se entrambe le affermazioni sono vere.
|| (or) È vero se almeno una delle affermazioni è vera.
! (not) È vero solo se l'affermazione è falsa.

Istruzioni

In questo esercizio implementerai la logica delle missioni per un nuovo gioco di ruolo che sta sviluppando un amico. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane fedele e feroce. Purtroppo arriva il disastro: la sua migliore amica è stata rapita mentre cercava delle bacche nel bosco. Annalyn cercherà di trovare e liberare la sua migliore amica e, se vuole, potrà portare con sé il suo cane in questa impresa.

Dopo aver seguito per un po' le tracce della sua migliore amica, trova il campo in cui è tenuta prigioniera. Si scopre che i rapitori sono due: un cavaliere possente e un arciere astuto.

Ora che ha trovato i rapitori, Annalyn valuta quale delle seguenti azioni può intraprendere:

  • Sferrare un attacco rapido: un attacco rapido è possibile se il cavaliere dorme: gli serve tempo per indossare l'armatura, quindi sarà vulnerabile.
  • Spiare: si può spiare il gruppo se almeno uno di loro è sveglio. Altrimenti, spiare è una perdita di tempo.
  • Segnalare al prigioniero: si può segnalare al prigioniero con i versi degli uccelli se il prigioniero è sveglio e l'arciere dorme: gli arcieri sono addestrati ai richiami degli uccelli, quindi potrebbero intercettare il messaggio.
  • Liberare il prigioniero: Annalyn può provare a intrufolarsi nel campo per liberare il prigioniero. È una cosa rischiosa e può riuscire solo in uno di due modi:
    • Se Annalyn ha con sé il suo 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 sia l'arciere dormono, ma se il prigioniero dorme non si può salvarlo: 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 precedenti sono disponibili in base allo stato dei tre personaggi trovati nel bosco e alla presenza o meno del cane di Annalyn.

1. Verifica se è possibile sferrare un attacco rapido

Definisci la funzione can_fast_attack() che accetta un valore booleano che indica se il cavaliere è sveglio. Questa funzione restituisce true se è possibile sferrare un attacco rapido in base allo stato del cavaliere. Altrimenti restituisce false:

let knight_awake = true;
can_fast_attack(knight_awake); // false

2. Verifica se si può spiare il gruppo

Definisci la funzione can_spy() che accetta tre valori booleani, che indicano rispettivamente se il cavaliere, l'arciere e il prigioniero sono svegli. La funzione restituisce true se si può spiare il gruppo, in base allo stato dei tre personaggi. Altrimenti restituisce false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true

3. Verifica se si può segnalare al prigioniero

Definisci la funzione can_signal_prisoner() che accetta due valori booleani, che indicano rispettivamente se l'arciere e il prigioniero sono svegli. La funzione restituisce true se si può segnalare al prigioniero, in base allo stato dei due personaggi. Altrimenti restituisce false:

let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true

4. Verifica se si può liberare il prigioniero

Definisci la funzione can_free_prisoner() 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. La funzione restituisce true se si può liberare il prigioniero, in base allo stato dei tre personaggi e alla presenza del cane di Annalyn. Altrimenti restituisce false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Cairo Exercism

Vuoi iniziare L'infiltrazione di Annalyn?

Iscriviti a Exercism per imparare e padroneggiare Cairo con 25 concetti68 esercizi e il mentoring di persone reali, tutto gratis.