Треки
/
JavaScript
JavaScript
/
Вправи
/
Проникнення Анналін
Проникнення Анналін

Проникнення Анналін

Навчальна вправа

Вступ

Булеве значення (англ. Boolean) може набувати одного з двох значень: true або false. Логічні оператори, як-от ! (заперечення), && (логічне і) та || (логічне або), зазвичай використовують із булевими значеннями. Вони повертають булеве значення.

Вказівки

У цій вправі ми реалізуємо логіку квестів для нової рольової гри, яку розробляє наш друг. Головна героїня гри - Анналін, відважна дівчина, у якої є грізний і відданий пес. На жаль, трапляється біда: її найкращого друга викрали, коли він шукав у лісі ягоди. Анналін спробує знайти й визволити свого найкращого друга, а за бажанням візьме в цей квест і свого пса.

Пройшовши деякий час слідами свого найкращого друга, вона знаходить табір, де його увʼязнено. Виявляється, викрадачів двоє: могутній лицар і хитрий лучник.

Знайшовши викрадачів, Анналін обмірковує, які з наведених дій вона може виконати:

  • Швидка атака: швидку атаку можна виконати, якщо лицар спить, адже йому потрібен час, щоб вдягнути обладунки, тож він буде вразливим.
  • Розвідка: за групою можна стежити, якщо принаймні один із них не спить. Інакше розвідка - марна трата часу.
  • Подати знак вʼязню: вʼязню можна подати знак за допомогою пташиних звуків, якщо вʼязень не спить, а лучник спить, адже лучників навчають пташиних сигналів, тож вони можуть перехопити повідомлення.
  • Визволити вʼязня: Анналін може спробувати прокрастися в табір і визволити вʼязня. Це ризиковано, і вдатися може лише в один із двох способів:
    • Якщо Анналін узяла із собою пса, вона може врятувати вʼязня, коли лучник спить. Лицар боїться пса, а лучник не встигне підготуватися, перш ніж Анналін і вʼязень зможуть утекти.
    • Якщо Анналін без пса, то їй і вʼязню доведеться діяти дуже тихо й обережно! Анналін може визволити вʼязня, якщо вʼязень не спить, а лицар і лучник обоє сплять, але якщо вʼязень спить, його не врятувати: вʼязень злякається раптової появи Анналін і розбудить лицаря та лучника.

На нас чекають чотири завдання: реалізувати логіку, яка визначає, чи доступні перелічені дії залежно від стану трьох персонажів, знайдених у лісі, і від того, чи є поруч пес Анналін.

1. Перевірка, чи можлива дія «Швидка атака»

Реалізуйте функцію з назвою canExecuteFastAttack, яка приймає булеве значення (англ. Boolean) і вказує, чи лицар не спить. Функція повертає true, якщо дія «Швидка атака» доступна залежно від стану персонажа. Інакше повертає false:

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

2. Перевірка, чи можлива дія «Розвідка»

Реалізуйте функцію з назвою canSpy, яка приймає три булеві значення, що вказують, чи не сплять відповідно лицар, лучник і вʼязень. Функція повертає true, якщо дія «Розвідка» доступна залежно від стану персонажів. Інакше повертає false:

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

3. Перевірка, чи можлива дія «Подати знак вʼязню»

Реалізуйте функцію з назвою canSignalPrisoner, яка приймає два булеві значення, що вказують, чи не сплять відповідно лучник і вʼязень. Функція повертає true, якщо дія «Подати знак вʼязню» доступна залежно від стану персонажів. Інакше повертає false:

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

4. Перевірка, чи можлива дія «Визволити вʼязня»

Реалізуйте функцію з назвою canFreePrisoner, яка приймає чотири булеві значення. Перші три параметри вказують, чи не сплять відповідно лицар, лучник і вʼязень. Останній параметр вказує, чи є поруч пес Анналін. Функція повертає true, якщо дія «Визволити вʼязня» доступна залежно від стану персонажів і наявності пса Анналін. Інакше повертає false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
const petDogIsPresent = false;
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Проникнення Анналін?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.