Le type Bool est l'une des briques de base du langage.
Il sert à décrire si quelque chose est vrai ou faux, avec les valeurs True et False correspondantes.
Les booléens peuvent être combinés avec les opérateurs && « et » et || « ou », et niés avec la fonction not.
Les booléens sont aussi extrêmement utiles pour créer, dans le code, des branches qui ne sont exécutées que si certaines conditions sont remplies.
En Elm, cela se fait avec une expression if-then-else, utilisée comme suit.
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
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 de compagnie féroce et fidèle. Malheureusement, le malheur frappe : son meilleur ami a été enlevé alors qu'il cherchait des baies dans la forêt. Annalyn va tenter de le retrouver et de le libérer, en emmenant éventuellement son chien avec elle dans cette quête.
Après avoir suivi pendant un moment la piste de son meilleur ami, elle trouve le camp où celui-ci est retenu prisonnier. Il s'avère qu'il y a deux ravisseurs : un chevalier puissant et un archer rusé.
Une fois les ravisseurs repérés, Annalyn réfléchit aux actions suivantes qu'elle peut entreprendre :
Tu as cinq tâches : implémenter la logique qui détermine si les actions ci-dessus sont possibles, en fonction de l'état des trois personnages présents dans la forêt et de la présence ou non du chien d'Annalyn.
Implémente la fonction canFastAttack qui prend une valeur booléenne indiquant si le chevalier est réveillé. Cette fonction renvoie True si une attaque rapide est possible selon l'état du chevalier. Sinon, elle renvoie False :
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Implémente la fonction canSpy qui prend trois valeurs booléennes indiquant respectivement si le chevalier, l'archer et le prisonnier sont réveillés. La fonction renvoie True si le groupe peut être espionné, selon l'état des trois personnages. Sinon, elle renvoie False :
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Implémente la fonction canSignalPrisoner qui prend deux valeurs booléennes indiquant respectivement si l'archer et le prisonnier sont réveillés. La fonction renvoie True si l'on peut faire signe au prisonnier, selon l'état des deux personnages. Sinon, elle renvoie False :
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Implémente la fonction canFreePrisoner qui prend quatre valeurs booléennes. Les trois premiers paramètres indiquent respectivement si le chevalier, l'archer et le prisonnier sont ré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é, selon l'état des trois personnages et la présence du chien d'Annalyn. Sinon, elle renvoie False :
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Implémente la fonction stealthAttackDamage qui prend une valeur booléenne indiquant si Annalyn a été repérée. Cette fonction renvoie 7 si elle a été repérée, et 12 sinon.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Inscris-toi sur Exercism pour apprendre et maîtriser Elm avec 28 concepts110 exercices, et un vrai mentorat humain, le tout gratuitement.