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

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

Boolean

Los booleanos en Java se representan con el tipo boolean, cuyos valores pueden ser true o false.

Java admite tres operadores booleanos:

  • ! (NO): niega el valor booleano
  • && (Y): toma dos valores booleanos y devuelve true si ambos son true
  • || (O): devuelve true si cualquiera de los dos valores booleanos es true

Ejemplos

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

Instrucciones

En este ejercicio, implementarás la lógica de la misión para un nuevo juego de rol que un amigo está desarrollando. La protagonista del juego es Annalyn, una chica valiente con un perro feroz y leal como mascota. Por desgracia, ocurre un desastre: su mejor amigo fue secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y rescatar a su amigo, y puede que lleve a su perro con ella en la misión.

Después de seguir el rastro un tiempo, Annalyn descubre el campamento donde está prisionero su amigo. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.

Una vez encontrados los secuestradores, Annalyn considera cuál 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 en ponerse la armadura y eso lo deja 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.
  • Enviar una señal al prisionero: se le puede enviar una señal al prisionero con sonidos de aves si el prisionero está despierto y el arquero está durmiendo. Los arqueros están entrenados en la señalización con aves y podrían interceptar el mensaje si están despiertos.
  • Liberar al prisionero: Annalyn puede intentar entrar a escondidas al campamento para liberar al prisionero. Esto es arriesgado y solo puede salir bien de una de dos maneras:
    • Si Annalyn tiene 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 tiene a su perro, entonces 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 durmiendo. Sin embargo, si el prisionero está dormido, no se lo puede rescatar, ya que Annalyn aparecería de repente y lo asustaría, 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 del bosque y según si el perro de Annalyn está presente o no.

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

Implementa el método (static) AnnalynsInfiltration.canFastAttack(), que recibe un valor booleano 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:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

2. Comprobar si se puede espiar al grupo

Implementa el método (static) AnnalynsInfiltration.canSpy(), que recibe tres valores booleanos 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:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Comprobar si se le puede enviar una señal al prisionero

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

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Comprobar si se puede liberar al prisionero

Implementa el método (static) AnnalynsInfiltration.canFreePrisoner(), que recibe cuatro valores booleanos. 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. 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:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Java Exercism

¿Todo listo para empezar La infiltración de Annalyn?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.