O tipo Bool é um dos blocos de construção da linguagem.
Serve para descrever se algo é verdadeiro ou falso, com os respetivos valores True e False.
Os Boolean podem ser combinados com os operadores && ("E") e || ("OU"), e negados com a função not.
Os Boolean também são extremamente úteis para criar ramificações no teu código que só são executadas quando determinadas condições se verificam.
Em Elm, isto faz-se com uma expressão if-then-else, usada da seguinte forma.
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
Neste exercício, vais implementar a lógica da missão para um novo jogo de RPG que um amigo está a desenvolver. A personagem principal do jogo é a Annalyn, uma rapariga corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: a melhor amiga dela foi raptada enquanto procurava frutos silvestres na floresta. A Annalyn vai tentar encontrar e libertar a melhor amiga, levando opcionalmente o cão com ela nesta missão.
Após algum tempo a seguir o rasto da melhor amiga, encontra o acampamento onde a melhor amiga está presa. Acontece que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.
Depois de encontrar os raptores, a Annalyn considera quais das seguintes ações pode realizar:
Tens cinco tarefas: implementar a lógica para determinar se as ações acima estão disponíveis, com base no estado das três personagens encontradas na floresta e na presença ou não do cão de estimação da Annalyn.
Implementa a função canFastAttack, que recebe um valor booleano que indica se o cavaleiro está acordado. Esta função devolve True se um ataque rápido puder ser feito, com base no estado do cavaleiro. Caso contrário, devolve False:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Implementa a função canSpy, que recebe três valores booleanos, indicando se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados. A função devolve True se o grupo puder ser espiado, com base no estado das três personagens. Caso contrário, devolve False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Implementa a função canSignalPrisoner, que recebe dois valores booleanos, indicando se o arqueiro e o prisioneiro, respetivamente, estão acordados. A função devolve True se o prisioneiro puder ser sinalizado, com base no estado das duas personagens. Caso contrário, devolve False:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Implementa a função canFreePrisoner, que recebe quatro valores booleanos. Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados. O último parâmetro indica se o cão de estimação da Annalyn está presente. A função devolve True se o prisioneiro puder ser libertado, com base no estado das três personagens e na presença do cão de estimação da Annalyn. Caso contrário, devolve False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Implementa a função stealthAttackDamage, que recebe um valor booleano que indica se a Annalyn foi detetada. Esta função devolve 7 se foi detetada, 12 caso contrário.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.