轨道
/
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 函数。

你有 4 条规则要翻译,它们都与游戏状态有关。

不用担心实参是怎么来的,只需专注于把实参组合起来,返回预期的结果。

1. 定义吃豆人是否能吃掉幽灵

定义 eat_ghost 函数,它接收 2 个实参(吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否能吃掉幽灵。只有当吃豆人能量丸处于生效状态且碰到幽灵时,函数才应返回 True。

eat_ghost(False, True)
// -> False

2. 定义吃豆人是否得分

定义 score 函数,它接收 2 个实参(吃豆人是否碰到能量丸_和_吃豆人是否碰到豆子),并返回一个布尔值,表示吃豆人是否得分。只要吃豆人碰到能量丸或豆子,函数就应返回 True。

score(True, True)
// -> True

3. 定义吃豆人是否失败

定义 lose 函数,它接收 2 个实参(吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否失败。如果吃豆人碰到幽灵,并且没有能量丸处于生效状态,函数应返回 True。

lose(False, True)
// -> True

4. 定义吃豆人是否获胜

定义 win 函数,它接收 3 个实参(吃豆人是否吃掉了所有的豆子、吃豆人是否有能量丸处于生效状态_和_吃豆人是否碰到幽灵),并返回一个布尔值,表示吃豆人是否获胜。如果吃豆人吃掉了所有的豆子,并且根据第 3 部分中定义的实参判断没有失败,函数应返回 True。

win(False, True, False)
// -> False
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Gleam Exercism

准备好开始 吃豆人规则 了吗?

注册 Exercism,借助 33 个概念122 个练习 和真人导师指导,学习并掌握 Gleam,全部免费。