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

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

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

Вступ

Булеві значення

Булеві значення (англ. Boolean) у C# представлені типом bool, значення якого можуть бути або true, або false.

C# підтримує три булеві оператори: ! (логічне заперечення), && (логічне і) та || (логічне або).

Вказівки

У цій вправі ми будемо реалізовувати логіку квесту для нової рольової гри, яку розробляє наш друг.

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

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

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

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

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

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

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

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

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

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

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

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

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

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

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

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

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

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

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

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.