Track
/
C#
C#
/
Esercizi
/
L'infiltrazione di Annalyn
L'infiltrazione di Annalyn

L'infiltrazione di Annalyn

Esercizio di apprendimento

Introduzione

Booleani

I booleani in C# sono rappresentati dal tipo bool, i cui valori possono essere true o false.

C# supporta tre operatori booleani: ! (NOT), && (AND) e || (OR).

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 con sé il cane, se vuole, in questa missione.

Dopo aver seguito per un po' le tracce del suo migliore amico, trova l'accampamento in cui è tenuto prigioniero. Si 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: si può sferrare un attacco rapido se il cavaliere sta dormendo, dato che ci vuole tempo per indossare l'armatura e quindi sarà vulnerabile.
  • Spionaggio: 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 usando versi di uccelli se il prigioniero è sveglio e l'arciere dorme, dato che gli arcieri sono addestrati a segnalare con i versi degli uccelli e potrebbero intercettare il messaggio.
  • Liberare il prigioniero: Annalyn può provare a intrufolarsi nell'accampamento per liberare il prigioniero. È un'impresa 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 il cane, allora lei e il prigioniero devono essere molto furtivi! Annalyn può liberare il prigioniero se il prigioniero è sveglio e dormono sia il cavaliere che l'arciere, ma se il prigioniero dorme non c'è modo di salvarlo: il prigioniero sarebbe colto di sorpresa dall'apparizione improvvisa di Annalyn e sveglierebbe il cavaliere e l'arciere.

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

1. Verifica se è possibile sferrare un attacco rapido

Implementa il metodo (static) QuestLogic.CanFastAttack(), che riceve un valore booleano che indica se il cavaliere è sveglio. Il metodo restituisce true se è possibile sferrare un attacco rapido in base allo stato del cavaliere. Altrimenti restituisce false:

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

2. Verifica se è possibile spiare il gruppo

Implementa il metodo (static) QuestLogic.CanSpy(), che riceve 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:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Verifica se è possibile segnalare al prigioniero

Implementa il metodo (static) QuestLogic.CanSignalPrisoner(), che riceve 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:

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Verifica se è possibile liberare il prigioniero

Implementa il metodo (static) QuestLogic.CanFreePrisoner(), 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. 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:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C# Exercism

Vuoi iniziare L'infiltrazione di Annalyn?

Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.