學習軌道
/
C#
C#
/
練習
/
安娜琳的滲透行動
安娜琳的滲透行動

安娜琳的滲透行動

學習練習

簡介

布林

在 C# 中,布林值以bool型別表示,它的值可以是true或false。

C# 支援 3 種布林運算子:!(NOT)、&&(AND)和||(OR)。

說明

在這個練習中,你將為一款朋友正在開發的新 RPG 遊戲實作任務邏輯。

遊戲的主角是 Annalyn,一位勇敢的女孩,身邊帶著一隻兇猛又忠誠的寵物狗。不幸的是,災難降臨了:她最好的朋友在森林裡尋找莓果時被人綁架。

Annalyn 將試著找到並解救她最好的朋友,這趟任務中她可以選擇帶上她的狗。

循著好友留下的蹤跡走了一段時間後,她找到了囚禁摯友的營地。原來綁匪有兩個人:一位強悍的騎士和一名狡詐的弓箭手。

找到綁匪後,Annalyn 開始思考自己可以採取下列哪些行動:

  • 快速攻擊:如果騎士正在睡覺,就可以發動快速攻擊;因為他穿上盔甲需要時間,這段期間他會很脆弱。
  • 刺探:只要三人中至少有一人醒著,就能對他們進行刺探。否則,刺探只是浪費時間。
  • 向囚犯打暗號:如果囚犯醒著、弓箭手在睡覺,就能用鳥叫聲向囚犯打暗號;因為弓箭手受過鳥叫暗號的訓練,可能會攔截訊息。
  • 解救囚犯:Annalyn 可以試著潛入營地解救囚犯。 這是一件很冒險的事,只有兩種方式能成功:
    • 如果 Annalyn 帶著她的寵物狗,只要弓箭手在睡覺,她就能救出囚犯。 騎士怕狗,而弓箭手也來不及準備,Annalyn 和囚犯就能趁機逃走。
    • 如果 Annalyn 沒有帶狗,那她和囚犯就得非常小心翼翼! Annalyn 只要在囚犯醒著、而且騎士和弓箭手都在睡覺時,就能解救囚犯;但如果囚犯在睡覺,就救不了他:囚犯會被 Annalyn 突然出現嚇到,反而吵醒騎士和弓箭手。

你有四項任務:根據森林裡這三位角色的狀態,以及 Annalyn 的寵物狗是否在場,實作出判斷上述行動是否可行的邏輯。

1. 檢查是否能發動快速攻擊

請實作(static)QuestLogic.CanFastAttack() 方法,它接受一個布林值,表示騎士是否醒著。這個方法會根據騎士的狀態,在可以發動快速攻擊時回傳 true,否則回傳 false:

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

2. 檢查是否能刺探這群人

請實作(static)QuestLogic.CanSpy() 方法,它接受三個布林值,分別表示騎士、弓箭手和囚犯是否醒著。這個方法會根據這三位角色的狀態,在可以刺探這群人時回傳 true,否則回傳 false:

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

3. 檢查是否能向囚犯打暗號

請實作(static)QuestLogic.CanSignalPrisoner() 方法,它接受兩個布林值,分別表示弓箭手和囚犯是否醒著。這個方法會根據這兩位角色的狀態,在可以向囚犯打暗號時回傳 true,否則回傳 false:

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

4. 檢查是否能解救囚犯

請實作(static)QuestLogic.CanFreePrisoner() 方法,它接受四個布林值。前三個參數分別表示騎士、弓箭手和囚犯是否醒著,最後一個參數則表示 Annalyn 的寵物狗是否在場。這個方法會根據這三位角色的狀態以及 Annalyn 的寵物狗是否在場,在可以解救囚犯時回傳 true,否則回傳 false:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C# Exercism

準備好開始 安娜琳的滲透行動 了嗎?

註冊 Exercism,透過 62 個概念178 個練習 和真人引導來學習並精通 C#,全部免費。