Trilhas
/
C#
C#
/
Exercícios
/
A infiltração de Annalyn
A infiltração de Annalyn

A infiltração de Annalyn

Exercício de aprendizagem

Introdução

Boolean

Os Boolean em C# são representados pelo tipo bool, cujos valores podem ser true ou false.

O C# tem três operadores Boolean: ! (NOT), && (AND) e || (OR).

Instruções

Neste exercício, você vai implementar a lógica da missão de um novo jogo de RPG que um amigo está desenvolvendo.

A personagem principal do jogo é Annalyn, uma garota corajosa com um cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: seu melhor amigo foi sequestrado enquanto procurava frutas silvestres na floresta.

Annalyn vai tentar encontrar e libertar seu melhor amigo, podendo levar seu cachorro com ela nesta missão.

Depois de algum tempo seguindo o rastro de seu melhor amigo, ela encontra o acampamento no qual ele está preso. Descobre que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.

Tendo encontrado os sequestradores, Annalyn considera quais das seguintes ações pode realizar:

  • Ataque rápido: um ataque rápido pode ser feito se o cavaleiro estiver dormindo, pois ele leva tempo para colocar a armadura, então estará vulnerável.
  • Espionar: o grupo pode ser espionado se pelo menos um deles estiver acordado. Caso contrário, espionar é perda de tempo.
  • Sinalizar o prisioneiro: pode-se sinalizar para o prisioneiro usando sons de pássaros se o prisioneiro estiver acordado e o arqueiro estiver dormindo, pois os arqueiros são treinados em sinais com pássaros, então poderiam interceptar a mensagem.
  • Libertar o prisioneiro: Annalyn pode tentar se infiltrar no acampamento para libertar o prisioneiro. Isso é arriscado e só pode dar certo de uma de duas maneiras:
    • Se Annalyn estiver com seu cachorro de estimação, ela pode resgatar o prisioneiro se o arqueiro estiver dormindo. O cavaleiro tem medo do cachorro e o arqueiro não terá tempo de se preparar antes que Annalyn e o prisioneiro consigam escapar.
    • Se Annalyn não estiver com o cachorro, então ela e o prisioneiro precisam ser muito furtivos! Annalyn pode libertar o prisioneiro se o prisioneiro estiver acordado e o cavaleiro e o arqueiro estiverem ambos dormindo, mas se o prisioneiro estiver dormindo, ele não pode ser resgatado: o prisioneiro se assustaria com a aparição repentina de Annalyn e acordaria o cavaleiro e o arqueiro.

Você tem quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis com base no estado dos três personagens encontrados na floresta e se o cachorro de estimação de Annalyn está presente ou não.

1. Verificar se um ataque rápido pode ser feito

Implemente o método (static) QuestLogic.CanFastAttack() que recebe um valor Boolean que indica se o cavaleiro está acordado. Esse método retorna true se um ataque rápido puder ser feito com base no estado do cavaleiro. Caso contrário, retorna false:

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

2. Verificar se o grupo pode ser espionado

Implemente o método (static) QuestLogic.CanSpy() que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. O método retorna true se o grupo puder ser espionado, com base no estado dos três personagens. Caso contrário, retorna false:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Verificar se o prisioneiro pode ser sinalizado

Implemente o método (static) QuestLogic.CanSignalPrisoner() que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. O método retorna true se o prisioneiro puder ser sinalizado, com base no estado dos dois personagens. Caso contrário, retorna false:

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Verificar se o prisioneiro pode ser libertado

Implemente o método (static) QuestLogic.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 estimação de Annalyn está presente. O método retorna true se o prisioneiro puder ser libertado com base no estado dos três personagens e na presença do cachorro de estimação de Annalyn. Caso contrário, retorna false:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar A infiltração de Annalyn?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.