O tipo Bool é um dos blocos de construção da linguagem.
Ele serve para descrever se algo é verdadeiro ou falso, com os respectivos valores True e False.
Os valores Boolean podem ser combinados com os operadores && ("E") e || ("OU"), e negados com a função not.
Os valores Boolean também são extremamente úteis para criar blocos no seu código que só são executados se certas condições forem atendidas.
Em Elm, isso é feito com uma expressão if-then-else, usada da seguinte forma.
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
Neste exercício, você vai implementar a lógica de missão de um novo jogo de RPG que um amigo está desenvolvendo. A personagem principal do jogo é Annalyn, uma menina corajosa com um cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: sua melhor amiga foi sequestrada enquanto procurava frutas silvestres na floresta. Annalyn vai tentar encontrar e libertar sua melhor amiga, podendo levar o cachorro com ela nessa missão.
Depois de algum tempo seguindo o rastro de sua melhor amiga, ela encontra o acampamento onde sua melhor amiga está presa. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.
Tendo encontrado os sequestradores, Annalyn considera quais das ações a seguir ela pode realizar:
Você tem cinco tarefas: implementar a lógica que determina se as ações acima estão disponíveis com base no estado dos três personagens encontrados na floresta e na presença ou não do cachorro de Annalyn.
Implemente a função canFastAttack, que recebe um valor Boolean indicando se o cavaleiro está acordado. Essa função retorna True se um ataque rápido puder ser feito com base no estado do cavaleiro. Caso contrário, retorna False:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Implemente a função canSpy, que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna True se o grupo puder ser espionado, com base no estado dos três personagens. Caso contrário, retorna False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Implemente a função canSignalPrisoner, que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna True se o prisioneiro puder ser sinalizado, com base no estado dos dois personagens. Caso contrário, retorna False:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Implemente a função canFreePrisoner, que recebe quatro valores Boolean. Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. O último parâmetro indica se o cachorro de Annalyn está presente. A função retorna True se o prisioneiro puder ser libertado, com base no estado dos três personagens e na presença do cachorro de Annalyn. Caso contrário, retorna False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Implemente a função stealthAttackDamage, que recebe um valor Boolean indicando se Annalyn foi detectada. Essa função retorna 7 se ela foi detectada, e 12 caso contrário.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Crie sua conta no Exercism para aprender e dominar Elm com 28 conceitos110 exercícios e mentoria humana de verdade, tudo de graça.