En Cairo, les booléens sont représentés par le type booléen prédéclaré bool, dont les valeurs peuvent être soit true, soit false.
let speeding = true; // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false'
Cairo prend en charge trois opérateurs logiques, qui évaluent des expressions en valeurs booléennes et renvoient soit true, soit false.
| Opérateur | Ce que ça signifie |
|---|---|
&& (et) |
Il est vrai si les deux assertions sont vraies. |
|| (ou) |
Il est vrai si au moins une assertion est vraie. |
! (non) |
Il est vrai seulement si l'assertion est fausse. |
Dans cet exercice, tu vas implémenter la logique de quête d'un nouveau jeu de rôle développé par un ami. Le personnage principal du jeu est Annalyn, une jeune fille courageuse accompagnée d'un chien de compagnie féroce et loyal. Hélas, le malheur frappe : son meilleur ami a été enlevé alors qu'il cherchait des baies dans la forêt. Annalyn va tenter de retrouver et de libérer son meilleur ami, en emmenant éventuellement son chien avec elle dans cette quête.
Après avoir suivi un moment la piste de son meilleur ami, elle trouve le camp où celui-ci est emprisonné. Il s'avère qu'il y a deux ravisseurs : un puissant chevalier et un archer rusé.
Ayant trouvé les ravisseurs, Annalyn se demande lesquelles des actions suivantes elle peut entreprendre :
Tu as quatre tâches : implémenter la logique qui détermine si les actions ci-dessus sont disponibles selon l'état des trois personnages trouvés dans la forêt et selon la présence ou non du chien d'Annalyn.
Définis la fonction can_fast_attack() qui prend une valeur booléenne indiquant si le chevalier est éveillé.
Cette fonction renvoie true si une attaque rapide est possible en fonction de l'état du chevalier.
Sinon, elle renvoie false :
let knight_awake = true;
can_fast_attack(knight_awake); // false
Définis la fonction can_spy() qui prend trois valeurs booléennes indiquant respectivement si le chevalier, l'archer et le prisonnier sont éveillés.
La fonction renvoie true si l'on peut espionner le groupe, en fonction de l'état des trois personnages.
Sinon, elle renvoie false :
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true
Définis la fonction can_signal_prisoner() qui prend deux valeurs booléennes indiquant respectivement si l'archer et le prisonnier sont éveillés.
La fonction renvoie true si le prisonnier peut être signalé, en fonction de l'état des deux personnages.
Sinon, elle renvoie false :
let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true
Définis la fonction can_free_prisoner() qui prend quatre valeurs booléennes.
Les trois premiers paramètres indiquent respectivement si le chevalier, l'archer et le prisonnier sont éveillés.
Le dernier paramètre indique si le chien d'Annalyn est présent.
La fonction 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 :
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Inscris-toi sur Exercism pour apprendre et maîtriser Cairo avec 25 concepts68 exercices, et un vrai mentorat humain, le tout gratuitement.