Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active October 25, 2025 12:38
Show Gist options
  • Save sunmeat/d96e56db9911c3d5e799b32f1b3a7930 to your computer and use it in GitHub Desktop.
Save sunmeat/d96e56db9911c3d5e799b32f1b3a7930 to your computer and use it in GitHub Desktop.
ДЗ на узагальнення

Створіть generic клас Spellbook, де T — тип заклинання, що реалізує інтерфейс ISpell з методами Cast() та GetPower(). Застосуйте комбіновані constraints: where T : ISpell, new(), IComparable для сортування заклинань за силою, і додайте метод LearnSpell(), що додає нові заклинання з перевіркою на унікальність через IComparable.

У Main() створіть Spellbook з вигаданими заклинаннями (клас Fireball та HealingWave, обидва з ISpell), або по Гарі Потеру. вивчіть 5 заклинань, відсортуйте та симулюйте кастування найсильнішого, виводячи ефекти. Додайте умовні constraints через where T : class для "темних" заклять (з додатковим інтерфейсом IDarkMagic), і метод InvokeRitual(), що комбінує заклинання лише якщо всі T задовольняють IDarkMagic, інакше кидає виняток. Тестуйте з мішаними типами в окремій Spellbook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment