C#の真偽値はbool型で表され、その値はtrueかfalseのどちらかです。
C#では3つの論理演算子が使えます。!(否定)、&&(AND)、||(OR)です。
この演習では、友人が開発している新しいRPGゲームのクエストロジックを実装します。
このゲームの主人公はAnnalyn。勇敢な女の子で、獰猛で忠実な飼い犬がいます。しかし不幸なことに、親友が森で木の実を探しているときに誘拐されてしまいます。
Annalynは親友を探し出して解放しようとします。この冒険に、飼い犬を連れていくこともできます。
親友の足跡を追ってしばらく進んだあと、親友が囚われている野営地を見つけます。誘拐犯は2人いました。強力な騎士と、ずる賢い弓術士です。
誘拐犯を見つけたAnnalynは、次のうちどの行動ができるかを考えます。
森で見つけた3人の状態と、Annalynの飼い犬がいるかどうかに基づいて、上記の行動が可能かどうかを判断するロジックを実装する、4つのタスクがあります。
騎士が起きているかどうかを示す真偽値を取る、QuestLogic.CanFastAttack()メソッド(static)を実装します。このメソッドは、騎士の状態に基づいて速攻を仕掛けられる場合はtrueを返します。そうでなければfalseを返します。
var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false
騎士、弓術士、囚人がそれぞれ起きているかどうかを示す3つの真偽値を取る、QuestLogic.CanSpy()メソッド(static)を実装します。このメソッドは、3人の状態に基づいて集団を偵察できる場合はtrueを返します。そうでなければfalseを返します。
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
弓術士と囚人がそれぞれ起きているかどうかを示す2つの真偽値を取る、QuestLogic.CanSignalPrisoner()メソッド(static)を実装します。このメソッドは、2人の状態に基づいて囚人に合図を送れる場合はtrueを返します。そうでなければfalseを返します。
var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
4つの真偽値を取る、QuestLogic.CanFreePrisoner()メソッド(static)を実装します。最初の3つの入力は、騎士、弓術士、囚人がそれぞれ起きているかどうかを示します。最後の入力は、Annalynの飼い犬がいるかどうかを示します。このメソッドは、3人の状態とAnnalynの飼い犬の有無に基づいて囚人を解放できる場合はtrueを返します。そうでなければfalseを返します。
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false