吃豆人的游戏规则

概念学习C++17

简介

C++ 使用 bool 类型表示布尔值。bool 的值只能是 true 或 false。

逻辑运算符

C++ 支持三种布尔运算符:!(非)、&&(与)、||(或),也可以使用替代写法 not、and、or。

true || false // => true
true && false // => false
!true // => false
not false // => true

优先级

三种布尔运算符的优先级不同,因此先计算 !,再计算 &&,最后计算 ||。如果希望改变计算顺序,可以用圆括号 () 包围布尔表达式,因为圆括号的优先级更高。

!true && false   // => false
!(true and false) // => true

进阶:类型转换

在需要数值的位置使用 true 或 false 时,它们分别转换为 1 和 0。在布尔运算中使用数值时,除 0 外的所有数都视为 true,负数也不例外。

!true && 0.0   // => false
true + true + false // => 2

任务说明

本练习需要将经典游戏“吃豆人”的部分规则写成 C++ 函数。

你需要实现四条规则,都与游戏状态有关。

不必关心参数如何获得,只需要组合这些参数,返回符合要求的结果。

1. 判断吃豆人能否吃掉幽灵

定义 can_eat_ghost 函数,接收两个参数:吃豆人是否处于能量豆生效状态,以及是否接触到幽灵。返回布尔值,表示能否吃掉幽灵。只有能量豆生效且接触到幽灵时,才返回 true。

can_eat_ghost(false, true);
// => false

2. 判断吃豆人是否得分

定义 scored 函数,接收两个参数:是否接触到能量豆,以及是否接触到普通豆。返回布尔值,表示是否得分。接触到能量豆或普通豆时,返回 true。

scored(true, true);
// => true

3. 判断吃豆人是否失败

定义 lost 函数,接收两个参数:能量豆是否生效,以及是否接触到幽灵。返回布尔值,表示是否失败。在接触到幽灵且能量豆未生效时,返回 true。

lost(false, true);
// => true

4. 判断吃豆人是否获胜

定义 won 函数,接收三个参数:是否吃完所有普通豆、能量豆是否生效,以及是否接触到幽灵。返回布尔值,表示是否获胜。只有吃完所有普通豆,且没有按照第三条规则判定为失败时,才返回 true。

won(false, true, false);
// => false
需要一点帮助?查看分步提示

提示

通用提示

  • 不必关心参数如何获得,只需要组合参数,返回符合要求的结果。

1. 判断能否吃掉幽灵

  • 函数必须返回布尔值。
  • 可以用逻辑与运算符 && 组合参数。

2. 判断是否得分

  • 函数必须返回布尔值。
  • 可以用逻辑或运算符 || 组合参数。

3. 判断是否失败

  • 函数必须返回布尔值。
  • 可以使用布尔运算符 && 和 ! 组合参数。

4. 判断是否获胜

  • 函数必须返回布尔值。
  • 可以使用 && 和 !,组合参数与之前实现的函数返回值。