Javaの真偽値はboolean型で表し、その値はtrueかfalseのどちらかです。
Javaでは、3つの真偽値演算子を使うことができます。
!(NOT):真偽値を反転させます&&(AND):2つの真偽値を受け取り、どちらもtrueであればtrueを返します||(OR):2つの真偽値のどちらかがtrueであればtrueを返します!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
この演習では、友人が開発している新しいRPGゲームのクエストロジックを実装します。 ゲームの主人公はアナリン。勇敢な女の子で、獰猛ながら忠実な飼い犬を連れています。 ところが、災難が降りかかります。彼女の親友が森でベリーを探しているときに誘拐されてしまったのです。 アナリンは友人を見つけて救出しようとします。クエストに犬を連れていくかどうかは自由です。
しばらく道をたどったあと、アナリンは友人が囚われている野営地を見つけます。 誘拐犯は2人いました。強力な騎士と、ずる賢い射手です。
誘拐犯を見つけたアナリンは、次のうちどの行動を取れるかを考えます。
タスクは4つあります。森にいる3人の状態と、アナリンの飼い犬がいるかどうかに基づいて、上記の行動が取れるかどうかを判断するロジックを実装しましょう。
(static)AnnalynsInfiltration.canFastAttack()メソッドを実装します。このメソッドは、騎士が起きているかどうかを示す真偽値を受け取ります。
このメソッドは、騎士の状態に基づいて速攻ができる場合はtrueを返します。
それ以外の場合はfalseを返します。
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
(static)AnnalynsInfiltration.canSpy()メソッドを実装します。このメソッドは、騎士、射手、囚人がそれぞれ起きているかどうかを示す3つの真偽値を受け取ります。
このメソッドは、3人の状態に基づいて一行を偵察できる場合はtrueを返します。
それ以外の場合はfalseを返します。
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
(static)AnnalynsInfiltration.canSignalPrisoner()メソッドを実装します。このメソッドは、射手と囚人がそれぞれ起きているかどうかを示す2つの真偽値を受け取ります。
このメソッドは、2人の状態に基づいて囚人に合図を送れる場合はtrueを返します。
それ以外の場合はfalseを返します。
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
(static)AnnalynsInfiltration.canFreePrisoner()メソッドを実装します。このメソッドは4つの真偽値を受け取ります。
最初の3つの仮引数は、騎士、射手、囚人がそれぞれ起きているかどうかを示します。
最後の仮引数は、アナリンの飼い犬がいるかどうかを示します。
このメソッドは、3人の状態とアナリンの飼い犬の有無に基づいて囚人を解放できる場合はtrueを返します。
それ以外の場合はfalseを返します。
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false