學習軌道
/
Gleam
Gleam
/
練習
/
小精靈規則
小精靈規則

小精靈規則

學習練習

簡介

布林

Gleam 用Bool型別來表示 true 和 false。這個型別只有兩個值:True和False。這些值可以綁定到變數上:

let true_variable = True
let false_variable = False

&&、||和!運算子可以用來操作布林值:

True && True  // -> True
True && False // -> False

False || True  // -> True
False || False // -> False

!False // -> True
!True  // -> False

&&和||運算子採用短路求值,這代表運算子右側的運算式只會在需要時才求值。

每個運算子的優先順序都不同,其中!會比&&和||先求值。你也可以用大括號讓運算式的某一部分先求值,再處理其他部分:

!True && False   // -> False
!{True && False} // -> True

說明

在這道練習中,你需要把經典遊戲 Pac-Man 的幾條規則翻譯成 Gleam 函式。

你要翻譯四條規則,全都和遊戲狀態有關。

別擔心這些引數是怎麼來的,只要專注在把引數組合起來,回傳預期的結果就好。

1. 定義 Pac-Man 是否會吃掉鬼

定義 eat_ghost 函式,它接受兩個引數(Pac-Man 是否有能量球生效、以及 Pac-Man 是否碰到鬼),並回傳 Pac-Man 是否能吃掉鬼的布林值。只有當 Pac-Man 有能量球生效且碰到鬼時,這個函式才應該回傳True。

eat_ghost(False, True)
// -> False

2. 定義 Pac-Man 是否得分

定義 score 函式,它接受兩個引數(Pac-Man 是否碰到能量球、以及 Pac-Man 是否碰到豆子),並回傳 Pac-Man 是否得分的布林值。只要 Pac-Man 碰到能量球或豆子,這個函式就應該回傳True。

score(True, True)
// -> True

3. 定義 Pac-Man 是否輸掉

定義 lose 函式,它接受兩個引數(Pac-Man 是否有能量球生效、以及 Pac-Man 是否碰到鬼),並回傳 Pac-Man 是否輸掉的布林值。如果 Pac-Man 碰到鬼而且沒有能量球生效,這個函式就應該回傳True。

lose(False, True)
// -> True

4. 定義 Pac-Man 是否獲勝

定義 win 函式,它接受三個引數(Pac-Man 是否吃光了所有豆子、Pac-Man 是否有能量球生效、以及 Pac-Man 是否碰到鬼),並回傳 Pac-Man 是否獲勝的布林值。如果 Pac-Man 吃光了所有豆子,而且根據第 3 部分定義的引數判斷並沒有輸掉,這個函式就應該回傳True。

win(False, True, False)
// -> False
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Gleam Exercism

準備好開始 小精靈規則 了嗎?

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