Rutas
/
Cairo
Cairo
/
Ejercicios
/
La infiltración de Annalyn
La infiltración de Annalyn

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

Los valores Boolean en Cairo se representan con el tipo predeclarado bool, cuyos valores pueden ser true o false.

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

Cairo admite tres operadores lógicos que pueden evaluar expresiones hasta obtener valores Boolean, devolviendo true o false.

Operador Qué significa
&& (and) Es verdadero si ambas afirmaciones son verdaderas.
|| (or) Es verdadero si al menos una afirmación es verdadera.
! (not) Es verdadero solo si la afirmación es falsa.

Instrucciones

En este ejercicio vas a implementar la lógica de una misión para un nuevo juego de rol que está desarrollando un amigo. El personaje principal del juego es Annalyn, una chica valiente con un perro feroz y leal. Por desgracia, la catástrofe llega cuando su mejor amigo es secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amigo, llevándose opcionalmente a su perro en esta misión.

Después de pasar un tiempo siguiendo el rastro de su mejor amigo, encuentra el campamento en el que está encerrado. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.

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

  • Ataque rápido: se puede hacer un ataque rápido si el caballero está dormido, ya que tarda un tiempo 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ñalar al prisionero: se puede señalar al prisionero usando sonidos de pájaros si el prisionero está despierto y el arquero está dormido, ya que los arqueros están entrenados en las señales de pájaros, así que 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 formas:
    • Si Annalyn tiene a su perro con ella, 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 puedan escapar.
    • Si Annalyn no tiene a su perro, entonces ella y el prisionero tendrán que ser muy sigilosos. Annalyn puede liberar al prisionero si este está despierto y tanto el caballero como el arquero están dormidos, pero si el prisionero está dormido 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 se encuentran en el bosque y según si el perro de Annalyn está presente o no.

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

Define la función can_fast_attack(), que recibe un valor Boolean que indica si el caballero está despierto. Esta función devuelve true si se puede hacer un ataque rápido según el estado del caballero. De lo contrario, devuelve false:

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

2. Comprobar si se puede espiar al grupo

Define la función can_spy(), que recibe tres valores Boolean que indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos. La función devuelve true si se puede espiar al grupo, según el estado de los tres personajes. De lo contrario, devuelve false:

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

3. Comprobar si se puede señalar al prisionero

Define la función can_signal_prisoner(), que recibe dos valores Boolean que indican si el arquero y el prisionero, respectivamente, están despiertos. La función devuelve true si se puede señalar al prisionero, según el estado de los dos personajes. De lo contrario, devuelve false:

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

4. Comprobar si se puede liberar al prisionero

Define la función can_free_prisoner(), 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 el perro de Annalyn está presente. La función 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:

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
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Cairo Exercism

¿Listo para empezar La infiltración de Annalyn?

Regístrate en Exercism para aprender y dominar Cairo con 25 conceptos68 ejercicios y mentoría humana real, todo gratis.