C# 中的布尔值由bool类型表示,它的值可以是true或false。
C# 支持三种布尔运算符:!(非)、&&(与)和||(或)。
在本练习中,你要为一位朋友正在开发的新角色扮演游戏实现任务逻辑。
游戏的主角是 Annalyn,一个勇敢的女孩,有一只凶猛而忠诚的宠物狗。不幸的是,灾难降临了:她最好的朋友在森林里寻找浆果时被绑架了。
Annalyn 会试着找到并救出她最好的朋友,也可以带上她的狗一起完成这次任务。
沿着好朋友留下的踪迹走了一段时间后,她找到了关押好朋友的营地。原来有两个绑架者:一位强大的骑士和一名狡猾的弓箭手。
找到绑架者后,Annalyn 考虑自己能采取以下哪些行动:
你有四个任务:根据在森林里找到的三个角色的状态,以及 Annalyn 的宠物狗是否在场,实现判断上述行动是否可行的逻辑。
实现(static)QuestLogic.CanFastAttack()方法,它接收一个布尔值,表示骑士是否醒着。如果根据骑士的状态可以发动快速攻击,该方法就返回true,否则返回false:
var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false
实现(static)QuestLogic.CanSpy()方法,它接收三个布尔值,分别表示骑士、弓箭手和囚犯是否醒着。如果根据这三个角色的状态可以对该群体进行侦察,该方法就返回true,否则返回false:
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
实现(static)QuestLogic.CanSignalPrisoner()方法,它接收两个布尔值,分别表示弓箭手和囚犯是否醒着。如果根据这两个角色的状态可以给囚犯发信号,该方法就返回true,否则返回false:
var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
实现(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