Percursos
/
C#
C#
/
Exercícios
/
A infiltração da Annalyn
A infiltração da Annalyn

A infiltração da Annalyn

Exercício de aprendizagem

Introdução

Boolean

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

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

Instruções

Neste exercício vais implementar a lógica da missão de um novo jogo de RPG que um amigo está a desenvolver.

A personagem principal do jogo é a Annalyn, uma rapariga corajosa que tem um cão de estimação feroz e leal. Infelizmente, o desastre acontece: a sua melhor amiga foi raptada enquanto procurava bagas na floresta.

A Annalyn vai tentar encontrar e libertar a sua melhor amiga, podendo levar o cão com ela nesta missão.

Depois de algum tempo a seguir o rasto da sua melhor amiga, encontra o acampamento onde ela está presa. Acontece que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.

Depois de encontrar os raptores, a Annalyn pensa em quais das seguintes ações pode realizar:

  • Ataque rápido: pode fazer-se um ataque rápido se o cavaleiro estiver a dormir, pois ele demora algum tempo a vestir a armadura, o que o deixa vulnerável.
  • Espiar: é possível espiar o grupo se pelo menos um dos seus elementos estiver acordado. Caso contrário, espiar é uma perda de tempo.
  • Enviar um sinal ao prisioneiro: pode enviar-se um sinal ao prisioneiro com sons de pássaros se o prisioneiro estiver acordado e o arqueiro estiver a dormir, pois os arqueiros são treinados em sinais com pássaros, pelo que poderiam intercetar a mensagem.
  • Libertar o prisioneiro: a Annalyn pode tentar entrar furtivamente no acampamento para libertar o prisioneiro. É uma coisa arriscada e só pode ter sucesso de uma de duas formas:
    • Se a Annalyn tiver o seu cão de estimação com ela, pode resgatar o prisioneiro se o arqueiro estiver a dormir. O cavaleiro tem medo do cão e o arqueiro não terá tempo de se preparar antes de a Annalyn e o prisioneiro conseguirem escapar.
    • Se a Annalyn não tiver o cão, então ela e o prisioneiro têm de ser muito furtivos! A Annalyn pode libertar o prisioneiro se este estiver acordado e o cavaleiro e o arqueiro estiverem ambos a dormir, mas se o prisioneiro estiver a dormir não pode ser resgatado: o prisioneiro assustar-se-ia com o aparecimento súbito da Annalyn e acordaria o cavaleiro e o arqueiro.

Tens quatro 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.

1. Verificar se é possível fazer um ataque rápido

Implementa o método (static) QuestLogic.CanFastAttack() que recebe um valor Boolean que indica se o cavaleiro está acordado. Este método devolve true se for possível fazer um ataque rápido com base no estado do cavaleiro. Caso contrário, devolve false:

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

2. Verificar se é possível espiar o grupo

Implementa o método (static) QuestLogic.CanSpy() que recebe três valores Boolean, que indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados. O método devolve true se for possível espiar o grupo, com base no estado das três personagens. Caso contrário, devolve false:

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

3. Verificar se é possível enviar um sinal ao prisioneiro

Implementa o método (static) QuestLogic.CanSignalPrisoner() que recebe dois valores Boolean, que indicam se o arqueiro e o prisioneiro, respetivamente, estão acordados. O método devolve true se for possível enviar um sinal ao prisioneiro, com base no estado das duas personagens. Caso contrário, devolve false:

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

4. Verificar se é possível libertar o prisioneiro

Implementa 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, respetivamente, estão acordados. O último parâmetro indica se o cão de estimação da Annalyn está presente. O método devolve true se for possível libertar o prisioneiro 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:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar A infiltração da Annalyn?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.