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

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

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

Instrucciones

En este ejercicio, implementarás 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 como mascota. Lamentablemente, todo se complica: su mejor amigo fue secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amigo, llevando opcionalmente a su perro con ella en esta misión.

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

Tras encontrar a los secuestradores, Annalyn considera cuál de las siguientes acciones puede realizar:

  • Ataque rápido: se puede hacer un ataque rápido si el caballero está durmiendo, ya que tarda un rato en ponerse la armadura, por lo 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 hacer señales al prisionero usando sonidos de aves si el prisionero está despierto y el arquero está durmiendo, ya que los arqueros están entrenados en el uso de señales con aves, por lo que podrían interceptar el mensaje.
  • Liberar al prisionero: Annalyn puede intentar colarse en el campamento para liberar al prisionero. Es algo arriesgado y solo puede salir bien de una de dos maneras:
    • Si Annalyn tiene a su perro con ella, puede rescatar al prisionero si el arquero está durmiendo. 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 con ella, ¡ella y el prisionero tendrán que ser muy sigilosos! Annalyn puede liberar al prisionero si el prisionero está despierto y el caballero y el arquero están ambos durmiendo, pero si el prisionero está durmiendo no es posible rescatarlo: 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 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. Comprueba si la acción «Ataque rápido» es posible

Implementa una función llamada canExecuteFastAttack que recibe un valor Boolean 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. Comprueba si la acción «Espiar» es posible

Implementa una función llamada canSpy 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 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. Comprueba si la acción «Señalizar al prisionero» es posible

Implementa una función llamada canSignalPrisoner que recibe dos valores Boolean, que indican si el arquero y el prisionero, respectivamente, están despiertos. La función devuelve true si la acción «Señalizar 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. Comprueba si la acción «Liberar al prisionero» es posible

Implementa una función llamada canFreePrisoner que recibe cuatro valores Boolean. Los primeros tres 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 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 una pestaña nuevas
JavaScript Exercism

¿Todo 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.