轨道
/
Elixir
Elixir
/
练习
/
吃豆人规则
吃豆人规则

吃豆人规则

学习练习

简介

布尔值

Elixir 用布尔类型表示 true 和 false 这两个值。布尔值只有两个:true和false。这些值可以绑定到变量上:

true_variable = true
false_variable = false

使用and/2、or/2和not/1运算符,可以计算严格的布尔表达式。

true_variable = true and true
false_variable = true and false

true_variable = false or true
false_variable = false or false

true_variable = not false
false_variable = not true

编写返回布尔值的函数时,按照惯例会在函数名末尾加上?。存储布尔值的变量也可以遵循同样的约定。

def either_true?(a?, b?) do
  a? or b?
end

说明

在这个练习中,你需要把经典游戏 Pac-Man 里的一些规则翻译成 Elixir 函数。

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

不用担心这些实参是怎么来的,只要专注于把它们组合起来,返回期望的结果就好。

1. 定义 Pac-Man 能否吃掉幽灵

定义Rules.eat_ghost?/2函数,它接收两个实参(Pac-Man 的能量豆是否处于激活状态_和_Pac-Man 是否碰到幽灵),并返回一个布尔值,表示 Pac-Man 能否吃掉幽灵。只有当 Pac-Man 的能量豆处于激活状态并且碰到了幽灵时,这个函数才应返回 true。

Rules.eat_ghost?(false, true)
# => false

2. 定义 Pac-Man 是否得分

定义Rules.score?/2函数,它接收两个实参(Pac-Man 是否碰到能量豆_和_Pac-Man 是否碰到豆子),并返回一个布尔值,表示 Pac-Man 是否得分。只要 Pac-Man 碰到了能量豆或豆子,这个函数就应返回 true。

Rules.score?(true, true)
# => true

3. 定义 Pac-Man 是否输掉游戏

定义Rules.lose?/2函数,它接收两个实参(Pac-Man 的能量豆是否处于激活状态_和_Pac-Man 是否碰到幽灵),并返回一个布尔值,表示 Pac-Man 是否输掉游戏。如果 Pac-Man 碰到了幽灵,而且能量豆没有处于激活状态,这个函数就应返回 true。

Rules.lose?(false, true)
# => true

4. 定义 Pac-Man 是否获胜

定义Rules.win?/3函数,它接收三个实参(Pac-Man 是否吃掉了所有豆子、Pac-Man 的能量豆是否处于激活状态_和_Pac-Man 是否碰到幽灵),并返回一个布尔值,表示 Pac-Man 是否获胜。如果 Pac-Man 吃掉了所有豆子,并且根据第 3 部分中定义的实参没有输掉游戏,这个函数就应返回 true。

Rules.win?(false, true, false)
# => false
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Elixir Exercism

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

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