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

安娜琳的滲透行動

學習練習

簡介

在 Cairo 中,布林值是由預先宣告的布林型別bool表示,其值可以是true或false。

let speeding = true;   // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false' 

Cairo 支援三種邏輯運算子,能將運算式求值為布林值,並回傳true或false。

運算子 意義
&&(且) 若兩個敘述皆為 true,則為 true。
||(或) 若至少一個敘述為 true,則為 true。
!(非) 只有當敘述為 false 時,才為 true。

說明

在這個練習中,你會為一位朋友正在開發的新 RPG 遊戲實作任務邏輯。 遊戲的主角是 Annalyn,一個勇敢的女孩,身邊帶著一隻兇猛又忠誠的寵物狗。 不幸的是,災難發生了:她最好的朋友在森林裡尋找莓果時被綁架了。 Annalyn 會試著找到並救出她最好的朋友,這趟任務中她可以選擇帶上她的狗。

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

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

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

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

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

定義can_fast_attack()函式,它接受一個布林值,表示騎士是否醒著。 根據騎士的狀態,如果可以發動快速攻擊,這個函式會回傳true。 否則,回傳false:

let knight_awake = true;
can_fast_attack(knight_awake); // false

2. 檢查是否可以對這群人進行偵查

定義can_spy()函式,它接受三個布林值,分別表示騎士、弓箭手和囚犯是否醒著。 根據這三個角色的狀態,如果可以對這群人進行偵查,這個函式會回傳true。 否則,回傳false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true

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

定義can_signal_prisoner()函式,它接受兩個布林值,分別表示弓箭手和囚犯是否醒著。 根據這兩個角色的狀態,如果可以向囚犯打暗號,這個函式會回傳true。 否則,回傳false:

let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true

4. 檢查是否可以釋放囚犯

定義can_free_prisoner()函式,它接受四個布林值。 前三個參數分別表示騎士、弓箭手和囚犯是否醒著。 最後一個參數表示 Annalyn 的寵物狗是否在場。 根據這三個角色的狀態以及 Annalyn 的寵物狗是否在場,如果可以釋放囚犯,這個函式會回傳true。 否則,它會回傳false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Cairo Exercism

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

註冊 Exercism,透過 25 個概念68 個練習 和真人引導來學習並精通 Cairo,全部免費。