Булеві значення (англ. Boolean) у C# представлені типом bool, значення якого можуть бути або true, або false.
C# підтримує три булеві оператори: ! (логічне заперечення), && (логічне і) та || (логічне або).
У цій вправі ми будемо реалізовувати логіку квесту для нової рольової гри, яку розробляє наш друг.
Головна героїня гри - Анналін, хоробра дівчина з відданим і безстрашним псом. На жаль, сталася біда: її найкращого друга викрали, коли він шукав у лісі ягоди.
Анналін спробує знайти і звільнити свого найкращого друга, за бажанням узявши з собою в цей квест свого пса.
Пройшовши деякий час слідом за найкращим другом, вона знаходить табір, де увʼязнено її найкращого друга. Виявляється, викрадачів двоє: могутній лицар і хитрий лучник.
Знайшовши викрадачів, Анналін міркує, які з наведених нижче дій вона може здійснити:
У нас чотири завдання: реалізувати логіку, яка визначає, чи доступні наведені вище дії, залежно від стану трьох персонажів, знайдених у лісі, і від того, чи є поруч улюблений пес Анналін.
Реалізуйте (static) метод QuestLogic.CanFastAttack(), який приймає булеве значення (англ. Boolean), що вказує, чи не спить лицар. Цей метод повертає true, якщо швидку атаку можна здійснити, виходячи зі стану лицаря. Інакше повертає false:
var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false
Реалізуйте (static) метод QuestLogic.CanSpy(), який приймає три булеві значення, що вказують, чи не сплять відповідно лицар, лучник і вʼязень. Метод повертає true, якщо за групою можна провести розвідку, виходячи зі стану трьох персонажів. Інакше повертає false:
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
Реалізуйте (static) метод QuestLogic.CanSignalPrisoner(), який приймає два булеві значення, що вказують, чи не сплять відповідно лучник і вʼязень. Метод повертає true, якщо вʼязневі можна подати сигнал, виходячи зі стану двох персонажів. Інакше повертає false:
var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
Реалізуйте (static) метод QuestLogic.CanFreePrisoner(), який приймає чотири булеві значення. Перші три параметри вказують, чи не сплять відповідно лицар, лучник і вʼязень. Останній параметр вказує, чи присутній улюблений пес Анналін. Метод повертає true, якщо вʼязня можна звільнити, виходячи зі стану трьох персонажів і наявності улюбленого пса Анналін. Інакше він повертає false:
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.