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

安娜琳的滲透行動

學習練習

簡介

布林值代表兩個值的其中一個:true或false。 邏輯運算子(!、&&、||)通常會與布林值搭配使用,並回傳布林值。

說明

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

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

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

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

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

1. 檢查是否能採取「快速攻擊」行動

實作一個名為 canExecuteFastAttack 的函式,接受一個布林值,代表騎士是否清醒。 如果根據該角色的狀態,「快速攻擊」行動可行,這個函式會回傳 true。否則,回傳 false:

const knightIsAwake = true;
canExecuteFastAttack(knightIsAwake);
// => false

2. 檢查是否能採取「刺探」行動

實作一個名為 canSpy 的函式,接受三個布林值,分別代表騎士、弓箭手和囚犯是否清醒。 如果根據這些角色的狀態,「刺探」行動可行,這個函式會回傳 true。否則,回傳 false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. 檢查是否能採取「向囚犯打暗號」行動

實作一個名為 canSignalPrisoner 的函式,接受兩個布林值,分別代表弓箭手和囚犯是否清醒。 如果根據這些角色的狀態,「向囚犯打暗號」行動可行,這個函式會回傳 true。否則,回傳 false:

const archerIsAwake = false;
const prisonerIsAwake = true;
canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. 檢查是否能採取「解救囚犯」行動

實作一個名為 canFreePrisoner 的函式,接受四個布林值。 前三個參數分別代表騎士、弓箭手和囚犯是否清醒。 最後一個參數代表 Annalyn 的寵物狗是否在場。 如果根據這些角色的狀態以及 Annalyn 的寵物狗是否在場,「解救囚犯」行動可行,這個函式會回傳 true。否則,會回傳 false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
const petDogIsPresent = false;
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
JavaScript Exercism

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

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