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

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

Un valor booleano representa uno de dos valores: true o false. Los operadores lógicos (!, &&, ||) se suelen usar con valores booleanos y devuelven un valor booleano.

Instrucciones

En este ejercicio vas a implementar la lógica de la misión de un nuevo juego de rol que está desarrollando un amigo. El personaje principal del juego es Annalyn, una chica valiente que tiene un perro feroz y leal. Por desgracia, todo se tuerce cuando secuestran a su mejor amiga mientras busca bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amiga y, si quiere, podrá llevar a su perro con ella en esta misión.

Después de seguir un tiempo el rastro de su mejor amiga, encuentra el campamento en el que esta 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á dormido, ya que tarda un tiempo en ponerse la armadura y por eso 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.
  • Hacer señales al prisionero: se pueden hacer señales al prisionero con 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 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 que solo puede salir bien de una de estas dos formas:
    • Si Annalyn lleva 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 puedan escapar.
    • Si Annalyn no lleva a su perro, tendrá que ser muy sigilosa junto con el prisionero. Annalyn puede liberar al prisionero si el prisionero está despierto y el caballero y el arquero están los dos dormidos, pero si el prisionero está dormido no se le puede rescatar: el prisionero se asustaría con la aparición repentina de Annalyn y despertaría al caballero y al arquero.

Tienes cuatro tareas: implementar la lógica que determina 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 la acción «ataque rápido» es posible

Implementa una función llamada canExecuteFastAttack que recibe un valor booleano que indica si el caballero está despierto. Esta función devuelve true si la acción «ataque rápido» está disponible según el estado del personaje. De lo contrario, devuelve false:

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

2. Comprobar si la acción «espiar» es posible

Implementa una función llamada canSpy que recibe tres valores booleanos que indican, respectivamente, si el caballero, el arquero y el prisionero están despiertos. La función devuelve true si la acción «espiar» está disponible según el estado de los personajes. De lo contrario, devuelve false:

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

3. Comprobar si la acción «hacer señales al prisionero» es posible

Implementa una función llamada canSignalPrisoner que recibe dos valores booleanos que indican, respectivamente, si el arquero y el prisionero están despiertos. La función devuelve true si la acción «hacer señales al prisionero» está disponible según el estado de los personajes. De lo contrario, devuelve false:

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

4. Comprobar si la acción «liberar al prisionero» es posible

Implementa una función llamada canFreePrisoner que recibe cuatro valores booleanos. Los tres primeros parámetros indican, respectivamente, si el caballero, el arquero y el prisionero están despiertos. El último parámetro indica si el perro de Annalyn está presente. La función devuelve true si la acción «liberar al prisionero» está disponible según el estado de los personajes y la presencia del perro de Annalyn. De lo contrario, devuelve false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
const petDogIsPresent = false;
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
JavaScript Exercism

¿Listo para empezar La infiltración de Annalyn?

Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.