Parcours
/
Java
Java
/
Exercices
/
L'infiltration d'Annalyn
L'infiltration d'Annalyn

L'infiltration d'Annalyn

Exercice d'apprentissage

Introduction

Booléens

En Java, les booléens sont représentés par le type boolean, dont les valeurs peuvent être true ou false.

Java prend en charge trois opérateurs booléens :

  • ! (PAS) : inverse le booléen
  • && (ET) : prend deux booléens et renvoie true s'ils sont tous les deux true
  • || (OU) : renvoie true si l'un des deux booléens vaut true

Exemples

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

Instructions

Dans cet exercice, tu vas implémenter la logique de quête d'un nouveau jeu de rôle (RPG) qu'un ami développe. Le personnage principal du jeu est Annalyn, une fille courageuse accompagnée d'un chien fidèle et féroce. Malheureusement, le malheur frappe : sa meilleure amie a été enlevée alors qu'elle cherchait des baies dans la forêt. Annalyn va tenter de retrouver et de délivrer son amie, en emmenant éventuellement son chien dans sa quête.

Après avoir suivi la piste un moment, Annalyn découvre le camp où son amie est retenue prisonnière. Il s'avère qu'il y a deux ravisseurs : un puissant chevalier et un archer rusé.

Ayant trouvé les ravisseurs, Annalyn examine lesquelles des actions suivantes elle peut entreprendre :

  • Attaque rapide : une attaque rapide est possible si le chevalier dort, car il lui faut du temps pour enfiler son armure, ce qui le laisse vulnérable.
  • Espionnage : on peut espionner le groupe si au moins l'un d'eux est éveillé. Sinon, l'espionnage est une perte de temps.
  • Signaler le prisonnier : on peut signaler le prisonnier à l'aide de cris d'oiseaux si le prisonnier est éveillé et que l'archer dort. Les archers sont formés au signalement par oiseaux et pourraient intercepter le message s'ils sont éveillés.
  • Libérer le prisonnier : Annalyn peut tenter de se faufiler dans le camp pour libérer le prisonnier. C'est risqué et ne peut réussir que de deux façons :
    • Si Annalyn a son chien, elle peut délivrer le prisonnier si l'archer dort. Le chevalier a peur du chien et l'archer n'aura pas le temps de se préparer avant qu'Annalyn et le prisonnier ne puissent s'échapper.
    • Si Annalyn n'a pas son chien, elle et le prisonnier doivent alors redoubler de discrétion. Annalyn peut libérer le prisonnier si le prisonnier est éveillé et que le chevalier et l'archer dorment tous les deux. En revanche, si le prisonnier dort, il ne peut pas être délivré, car il serait surpris par l'apparition soudaine d'Annalyn et réveillerait le chevalier et l'archer.

Tu as quatre tâches : implémenter la logique qui détermine si les actions ci-dessus sont possibles, en fonction de l'état des trois personnages dans la forêt et de la présence ou non du chien d'Annalyn.

1. Vérifie si une attaque rapide est possible

Implémente la méthode (static) AnnalynsInfiltration.canFastAttack(), qui prend une valeur booléenne indiquant si le chevalier est éveillé. Cette méthode renvoie true si une attaque rapide est possible en fonction de l'état du chevalier. Sinon, elle renvoie false :

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

2. Vérifie si le groupe peut être espionné

Implémente la méthode (static) AnnalynsInfiltration.canSpy(), qui prend trois valeurs booléennes indiquant si le chevalier, l'archer et le prisonnier, respectivement, sont éveillés. La méthode renvoie true si le groupe peut être espionné en fonction de l'état des trois personnages. Sinon, elle renvoie false :

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

3. Vérifie si le prisonnier peut être signalé

Implémente la méthode (static) AnnalynsInfiltration.canSignalPrisoner(), qui prend deux valeurs booléennes indiquant si l'archer et le prisonnier, respectivement, sont éveillés. La méthode renvoie true si le prisonnier peut être signalé en fonction de l'état des deux personnages. Sinon, elle renvoie false :

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

4. Vérifie si le prisonnier peut être libéré

Implémente la méthode (static) AnnalynsInfiltration.canFreePrisoner(), qui prend quatre valeurs booléennes. Les trois premiers paramètres indiquent si le chevalier, l'archer et le prisonnier, respectivement, sont éveillés. Le dernier paramètre indique si le chien d'Annalyn est présent. La méthode renvoie true si le prisonnier peut être libéré en fonction de l'état des trois personnages et de la présence du chien d'Annalyn. Sinon, elle renvoie false :

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Java Exercism

Prêt à commencer L'infiltration d'Annalyn ?

Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.