轨道
/
Java
Java
/
练习
/
Annalyn 的潜入
Annalyn 的潜入

Annalyn 的潜入

学习练习

简介

布尔值

Java 中的布尔值由boolean类型表示,它的取值可以是true或false。

Java 支持三种布尔运算符:

  • !(NOT):对布尔值取反
  • &&(AND):接受两个布尔值,如果它们都是true,就返回true
  • ||(OR):只要两个布尔值中有一个是true,就返回true

示例

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

说明

在本练习中,你将为一个新 RPG 游戏实现任务逻辑,这个游戏是你的一位朋友正在开发的。游戏的主角是 Annalyn,一个勇敢的女孩,带着一只凶猛而忠诚的宠物狗。不幸的是,灾难突然降临:她最好的朋友在森林里采浆果时被绑架了。Annalyn 要设法找到并救出她的朋友,还可以选择带上她的狗一起完成这个任务。

沿着踪迹追寻了一段时间后,Annalyn 发现了关押她朋友的营地。原来绑匪有两个:一个强大的骑士和一个狡猾的弓箭手。

找到绑匪后,Annalyn 考虑自己可以采取下列哪些行动:

  • 快速攻击:如果骑士正在睡觉,就可以发动快速攻击,因为他需要时间穿上盔甲,这段时间里他毫无防备。
  • 侦察:如果三人中至少有一个人醒着,就可以对他们进行侦察。 否则,侦察只是浪费时间。
  • 向囚犯发信号:如果囚犯醒着而弓箭手在睡觉,就可以用鸟叫声向囚犯发信号。 弓箭手受过鸟叫声信号的训练,如果他们醒着,就可能截获这条信息。
  • 解救囚犯:Annalyn 可以尝试潜入营地解救囚犯。 这很冒险,只有两种情况之一才能成功:
    • 如果 Annalyn 带着她的宠物狗,那么在弓箭手睡着时她就能救出囚犯。 骑士害怕狗,而弓箭手来不及做好准备,Annalyn 和囚犯就能逃走。
    • 如果 Annalyn 没有带宠物狗,那么她和囚犯就必须非常小心行事! 在囚犯醒着、骑士和弓箭手都睡着时,Annalyn 就能解救囚犯。 不过,如果囚犯正在睡觉,就无法救出他,因为 Annalyn 突然出现会吓到囚犯,把骑士和弓箭手吵醒。

你有四个任务:根据森林里三个角色的状态以及 Annalyn 的宠物狗是否在场,实现判断上述行动是否可行的逻辑。

1. 检查是否可以发动快速攻击

实现(static)AnnalynsInfiltration.canFastAttack() 方法,它接受一个布尔值,表示骑士是否醒着。 该方法根据骑士的状态,如果可以发动快速攻击就返回 true。 否则返回 false:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

2. 检查是否可以侦察这群人

实现(static)AnnalynsInfiltration.canSpy() 方法,它接受三个布尔值,分别表示骑士、弓箭手和囚犯是否醒着。 该方法根据这三个角色的状态,如果可以对他们进行侦察就返回 true。 否则返回 false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. 检查是否可以向囚犯发信号

实现(static)AnnalynsInfiltration.canSignalPrisoner() 方法,它接受两个布尔值,分别表示弓箭手和囚犯是否醒着。 该方法根据这两个角色的状态,如果可以向囚犯发信号就返回 true。 否则返回 false:

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. 检查是否可以解救囚犯

实现(static)AnnalynsInfiltration.canFreePrisoner() 方法,它接受四个布尔值。 前三个形参分别表示骑士、弓箭手和囚犯是否醒着。 最后一个形参表示 Annalyn 的宠物狗是否在场。 该方法根据这三个角色的状态以及 Annalyn 的宠物狗是否在场,如果可以解救囚犯就返回 true。 否则返回 false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Java Exercism

准备好开始 Annalyn 的潜入 了吗?

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