轨道
/
C#
C#
/
练习
/
Annalyn 的潜入
Annalyn 的潜入

Annalyn 的潜入

学习练习

简介

布尔值

C# 中的布尔值由bool类型表示,它的值可以是true或false。

C# 支持三种布尔运算符:!(非)、&&(与)和||(或)。

说明

在本练习中,你要为一位朋友正在开发的新角色扮演游戏实现任务逻辑。

游戏的主角是 Annalyn,一个勇敢的女孩,有一只凶猛而忠诚的宠物狗。不幸的是,灾难降临了:她最好的朋友在森林里寻找浆果时被绑架了。

Annalyn 会试着找到并救出她最好的朋友,也可以带上她的狗一起完成这次任务。

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

找到绑架者后,Annalyn 考虑自己能采取以下哪些行动:

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

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

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

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

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

2. 检查是否可以对该群体进行侦察

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

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

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

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

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

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

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

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
C# Exercism

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

注册 Exercism,借助 62 个概念178 个练习 和真人导师指导,学习并掌握 C#,全部免费。