Логіка квестів у RPG


Історія

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

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

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

  • Швидка атака
  • Шпигування
  • Подати сигнал увʼязненому
  • Визволити увʼязненого

Завдання

Ось приклади завдань, які пасують до історії про те, як Анналін рятує найкращого друга:

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

Термінологія

Це рекомендації, а не правила, щодо повторюваної термінології в інструкціях (зокрема в коментарях у заготовці).

  • Головна героїня - Анналін, і для неї використовують займенники she/her. Якщо потрібно позначити персонажа, використовуйте імʼя або звертайтеся до неї за допомогою займенника (займенників).
  • Замість boolean (або відповідного типу даних) використовуйте can {action} або can perform {action}.
  • Увʼязнений - це її найкращий друг, і для нього використовують займенники they/their.
  • Не звертайтеся до Анналін, увʼязненого, лучника, лицаря чи пса Анналін займенниками, бо значення, найімовірніше, буде неоднозначним; натомість використовуйте саме виділені позначення.

Реалізації

Повʼязане