Rutas
/
C#
C#
/
Ejercicios
/
La infiltración de Annalyn
La infiltración de Annalyn

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

Boolean

En C#, los valores booleanos se representan con el tipo bool, cuyos valores pueden ser true o false.

C# admite tres operadores Boolean: ! (NOT), && (AND) y || (OR).

Instrucciones

En este ejercicio, vas a implementar la lógica de la misión para un nuevo juego de rol que está desarrollando un amigo.

La protagonista del juego es Annalyn, una chica valiente con un perro feroz y leal. Por desgracia, la tragedia llama a su puerta: su mejor amiga fue secuestrada mientras buscaba bayas en el bosque.

Annalyn intentará encontrar y liberar a su mejor amiga, y puede que se lleve a su perro en esta misión.

Tras pasar un tiempo siguiendo el rastro de su mejor amiga, encuentra el campamento en el que está prisionera. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.

Una vez encontrados los secuestradores, Annalyn se plantea cuáles de las siguientes acciones puede llevar a cabo:

  • Ataque rápido: se puede hacer un ataque rápido si el caballero está durmiendo, ya que tarda un rato en ponerse la armadura, así que estará vulnerable.
  • Espiar: se puede espiar al grupo si al menos uno de ellos está despierto. De lo contrario, espiar es una pérdida de tiempo.
  • Señalizar al prisionero: se puede señalizar al prisionero con sonidos de pájaros si el prisionero está despierto y el arquero está durmiendo, ya que los arqueros están entrenados en la señalización con pájaros y podrían interceptar el mensaje.
  • Liberar al prisionero: Annalyn puede intentar colarse en el campamento para liberar al prisionero. Es una acción arriesgada y solo puede salir bien de una de estas dos maneras:
    • Si Annalyn lleva consigo a su perro, puede rescatar al prisionero si el arquero está dormido. El caballero le tiene miedo al perro y el arquero no tendrá tiempo de prepararse antes de que Annalyn y el prisionero escapen.
    • Si Annalyn no lleva a su perro, ¡ella y el prisionero tendrán que ser muy sigilosos! Annalyn puede liberar al prisionero si el prisionero está despierto y tanto el caballero como el arquero están dormidos, pero si el prisionero está durmiendo no se le puede rescatar: el prisionero se asustaría con la repentina aparición de Annalyn y despertaría al caballero y al arquero.

Tienes cuatro tareas: implementar la lógica para determinar si las acciones anteriores están disponibles según el estado de los tres personajes que hay en el bosque y según si está presente o no el perro de Annalyn.

1. Comprobar si se puede hacer un ataque rápido

Implementa el método QuestLogic.CanFastAttack() (static) que recibe un valor Boolean que indica si el caballero está despierto. Este método devuelve true si se puede hacer un ataque rápido según el estado del caballero. De lo contrario, devuelve false:

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

2. Comprobar si se puede espiar al grupo

Implementa el método QuestLogic.CanSpy() (static) que recibe tres valores Boolean que indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos. El método devuelve true si se puede espiar al grupo, según el estado de los tres personajes. De lo contrario, devuelve false:

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

3. Comprobar si se puede señalizar al prisionero

Implementa el método QuestLogic.CanSignalPrisoner() (static) que recibe dos valores Boolean que indican si el arquero y el prisionero, respectivamente, están despiertos. El método devuelve true si se puede señalizar al prisionero, según el estado de los dos personajes. De lo contrario, devuelve false:

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

4. Comprobar si se puede liberar al prisionero

Implementa el método QuestLogic.CanFreePrisoner() (static) que recibe cuatro valores Boolean. Los tres primeros parámetros indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos. El último parámetro indica si está presente el perro de Annalyn. El método devuelve true si se puede liberar al prisionero según el estado de los tres personajes y la presencia del perro de Annalyn. De lo contrario, devuelve false:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C# Exercism

¿Listo para empezar La infiltración de Annalyn?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.