トラック
/
JavaScript
JavaScript
/
演習
/
アナリンの潜入
アナリンの潜入

アナリンの潜入

学習演習

はじめに

真偽値は、trueかfalseという2つの値のうちのどちらかを表します。 論理演算子(!、&&、||)は通常、真偽値と一緒に使われ、真偽値を返します。

説明

この演習では、友人が開発中の新しいRPGゲームのクエストロジックを実装します。 ゲームの主人公はAnnalynで、獰猛で忠実な飼い犬を連れた勇敢な女の子です。 ところが不幸なことに、森で木の実を探していた親友が誘拐されてしまいます。 Annalynは親友を見つけて助け出そうとします。この冒険には、飼い犬を連れて行くこともできます。

親友の足跡をしばらく追ったあと、Annalynは親友が囚われている野営地を見つけます。 そこには2人の誘拐犯がいることがわかります。屈強な騎士と、ずる賢い弓使いです。

誘拐犯を見つけたAnnalynは、次のどの行動が取れるかを考えます:

  • 速攻: 騎士が**眠っている**ときに速攻できます。鎧を着るのに時間がかかり、無防備になるからです。
  • スパイ: 少なくとも1人が**起きている**ときに、誘拐犯たちをスパイできます。そうでなければ、スパイは時間の無駄です。
  • 囚人に合図を送る: 囚人が**起きていて、弓使いが眠っている**ときに、鳥の鳴き声で囚人に合図を送れます。弓使いは鳥の合図の訓練を受けているので、メッセージを傍受されてしまうからです。
  • 囚人を解放する: Annalynは野営地に忍び込んで囚人を解放しようとします。 これは危険な行動で、次の2つの方法のどちらかでしか成功しません:
    • Annalynが飼い犬を連れている場合、弓使いが**眠っていれば**囚人を救出できます。 騎士は犬を怖がりますし、弓使いが準備をする前にAnnalynと囚人は逃げ出せるからです。
    • Annalynが犬を連れていない場合は、Annalynと囚人は細心の注意を払わなければなりません! 囚人が**起きていて、騎士と弓使いがどちらも眠っているときにAnnalynは囚人を解放できます。しかし囚人が眠っている**場合は救出できません。Annalynがいきなり現れると囚人が驚いて、騎士と弓使いを起こしてしまうからです。

4つのタスクがあります。森で見つけた3人の状態と、Annalynが飼い犬を連れているかどうかに基づいて、上記の行動が可能かどうかを判断するロジックを実装します。

1. 「速攻」アクションが可能かどうかを確認する

canExecuteFastAttackという名前の関数を実装します。この関数は、騎士が起きているかどうかを示す真偽値を受け取ります。 この関数は、キャラクターの状態に基づいて「速攻」アクションが可能であればtrueを返します。 そうでなければ、falseを返します:

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

2. 「スパイ」アクションが可能かどうかを確認する

canSpyという名前の関数を実装します。この関数は3つの真偽値を受け取り、それぞれ騎士、弓使い、囚人が起きているかどうかを示します。 この関数は、キャラクターの状態に基づいて「スパイ」アクションが可能であればtrueを返します。 そうでなければ、falseを返します:

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

3. 「囚人に合図を送る」アクションが可能かどうかを確認する

canSignalPrisonerという名前の関数を実装します。この関数は2つの真偽値を受け取り、それぞれ弓使いと囚人が起きているかどうかを示します。 この関数は、キャラクターの状態に基づいて「囚人に合図を送る」アクションが可能であればtrueを返します。 そうでなければ、falseを返します:

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

4. 「囚人を解放する」アクションが可能かどうかを確認する

canFreePrisonerという名前の関数を実装します。この関数は4つの真偽値を受け取ります。 最初の3つの入力は、それぞれ騎士、弓使い、囚人が起きているかどうかを示します。 最後の入力は、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

アナリンの潜入を始める準備はできましたか?

Exercismに登録すれば、37個のコンセプト159個の演習、そして本物の人間によるメンタリングとともに、JavaScriptを学んでマスターできます。すべて無料です。