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

La infiltración de Annalyn

Ejercicio de aprendizaje

Introducción

Boolean

En Java, los valores booleanos se representan con el tipo boolean, que puede tomar uno de estos dos valores: true o false.

Java admite tres operadores Boolean:

  • ! (NOT): niega el valor booleano
  • && (AND): toma dos valores booleanos y devuelve true si ambos son true
  • || (OR): devuelve true si alguno 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 de 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, ocurre una catástrofe: su mejor amiga ha sido secuestrada mientras buscaba bayas en el bosque. Annalyn intentará encontrar y rescatar a su amiga, llevándose opcionalmente a su perro en la misión.

Tras pasar un tiempo siguiendo el rastro, Annalyn descubre el campamento donde está encerrada su amiga. Resulta que hay dos secuestradores: un poderoso caballero y un astuto arquero.

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, lo que 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.
  • Hacer señales a la prisionera: se puede hacer señales a la prisionera con sonidos de pájaros si la prisionera está despierta y el arquero está dormido. Los arqueros están entrenados en las señales con sonidos de pájaros y podrían interceptar el mensaje si están despiertos.
  • Liberar a la prisionera: Annalyn puede intentar colarse en el campamento para liberar a la prisionera. Es arriesgado y solo puede salir bien de una de estas dos formas:
    • Si Annalyn tiene a su perro, puede rescatar a la prisionera 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 la prisionera puedan escapar.
    • Si Annalyn no tiene a su perro, tanto ella como la prisionera tendrán que ser muy sigilosas. Annalyn puede liberar a la prisionera si la prisionera está despierta y tanto el caballero como el arquero están dormidos. Sin embargo, si la prisionera está dormida, no se la puede rescatar, ya que 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 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

Implementa el método (static) AnnalynsInfiltration.canFastAttack(), que recibe un valor booleano que indica si el caballero está despierto. El 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 la prisionera, 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 puede hacer señales a la prisionera

Implementa el método (static) AnnalynsInfiltration.canSignalPrisoner(), que recibe dos valores booleanos que indican si el arquero y la prisionera, respectivamente, están despiertos. El método devuelve true si se puede hacer señales a la prisionera 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 a la prisionera

Implementa el método (static) AnnalynsInfiltration.canFreePrisoner(), que recibe cuatro valores booleanos. Los tres primeros parámetros indican si el caballero, el arquero y la prisionera, 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 a la prisionera 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 pestaña nueva
Java Exercism

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