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

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

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

Вступ

Булеві значення (англ. Boolean)

Булеві значення в Java представлені типом boolean, значення якого можуть бути або true, або false.

Java підтримує три булеві оператори:

  • ! (логічне заперечення): заперечує булеве значення
  • && (логічне і): приймає два булеві значення і повертає true, якщо обидва дорівнюють true
  • || (логічне або): повертає true, якщо хоча б одне з двох булевих значень дорівнює true

Приклади

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

Вказівки

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

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

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

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

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

1. Перевірити, чи можна здійснити швидку атаку

Реалізуйте (статичний) метод AnnalynsInfiltration.canFastAttack(), який приймає булеве значення (англ. Boolean), що вказує, чи не спить лицар. Метод повертає true, якщо швидку атаку можна здійснити за станом лицаря. Інакше він повертає false:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

2. Перевірити, чи можна стежити за групою

Реалізуйте (статичний) метод AnnalynsInfiltration.canSpy(), який приймає три булеві значення, що вказують, чи не сплять відповідно лицар, лучник і вʼязень. Метод повертає true, якщо за групою можна стежити за станом цих трьох персонажів. Інакше він повертає false:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Перевірити, чи можна подати сигнал вʼязню

Реалізуйте (статичний) метод AnnalynsInfiltration.canSignalPrisoner(), який приймає два булеві значення, що вказують, чи не сплять відповідно лучник і вʼязень. Метод повертає true, якщо вʼязню можна подати сигнал за станом цих двох персонажів. Інакше він повертає false:

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Перевірити, чи можна звільнити вʼязня

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

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

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

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