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

Annalyn 的潜入

学习练习

简介

布尔值表示两种值之一:true 或 false。 逻辑运算符(!、&&、||)通常与布尔值一起使用,并返回布尔值。

说明

在这道练习中,你要为一个朋友正在开发的新 RPG 游戏实现任务逻辑。 游戏的主角是 Annalyn,一个勇敢的女孩,她有一只凶猛而忠诚的宠物狗。 不幸的是,灾难降临了:她最好的朋友在森林里采浆果时被绑架了。 Annalyn 会试着找到并救出她最好的朋友,这次冒险中她可以选择带上自己的狗。

沿着好朋友的踪迹走了一段时间后,她找到了关押好朋友的营地。 原来有两个绑匪:一位强大的骑士和一个狡猾的弓箭手。

找到绑匪后,Annalyn 开始考虑自己能采取下面哪些行动:

  • 快速攻击:只有当骑士在**睡觉**时才能发动快速攻击,因为他穿上盔甲需要时间,这段时间里他会很脆弱。
  • 侦察:只要他们当中至少有一个人在**醒着**,就可以对这群人进行侦察;否则侦察只是浪费时间。
  • 给囚犯发信号:如果囚犯在**醒着,并且弓箭手在睡觉**,就可以用鸟叫声给囚犯发信号,因为弓箭手受过鸟鸣信号的训练,可能会截获消息。
  • 救出囚犯:Annalyn 可以试着潜入营地救出囚犯。 这件事很冒险,只有两种方式能成功:
    • 如果 Annalyn 带着她的宠物狗,那么只要弓箭手在**睡着**,她就能救出囚犯。 骑士怕狗,弓箭手也来不及准备好,Annalyn 和囚犯就能逃走。
    • 如果 Annalyn 没带狗,那她和囚犯就必须非常小心! Annalyn 只有在囚犯在**醒着,并且骑士和弓箭手都在睡觉时才能救出囚犯;但如果囚犯在睡觉**,就没法救:囚犯会被突然出现的 Annalyn 吓到,从而惊醒骑士和弓箭手。

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

1. 检查“快速攻击”行动是否可行

实现一个名为canExecuteFastAttack的函数,它接收一个布尔值,表示骑士是否醒着。 如果根据该角色的状态,“快速攻击”行动可用,这个函数就返回true,否则返回false:

const knightIsAwake = true;
canExecuteFastAttack(knightIsAwake);
// => false

2. 检查“侦察”行动是否可行

实现一个名为canSpy的函数,它接收三个布尔值,分别表示骑士、弓箭手和囚犯是否醒着。 如果根据这些角色的状态,“侦察”行动可用,这个函数就返回true,否则返回false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. 检查“给囚犯发信号”行动是否可行

实现一个名为canSignalPrisoner的函数,它接收两个布尔值,分别表示弓箭手和囚犯是否醒着。 如果根据这些角色的状态,“给囚犯发信号”行动可用,这个函数就返回true,否则返回false:

const archerIsAwake = false;
const prisonerIsAwake = true;
canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. 检查“救出囚犯”行动是否可行

实现一个名为canFreePrisoner的函数,它接收四个布尔值。 前三个形参分别表示骑士、弓箭手和囚犯是否醒着。 最后一个形参表示 Annalyn 的宠物狗是否在场。 如果根据这些角色的状态以及 Annalyn 的宠物狗是否在场,“救出囚犯”行动可用,这个函数就返回true,否则返回false:

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

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

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