Заполнить клетку животными и эмулировать бабуина, который берёт животных с наибольшей приятностью и гладит

Условия задачи:

У нас есть бабуины, коты, ежики и белки. Все они животные. У каждого животного есть имя, а еще параметр приятности, который может принимать значения от 1 до 100.

У бабуинов есть методы взять, положить и гладить. Бабуин может брать животное, может гладить животное, которое взял. Бабуину нравится гладить приятных животных и не нравится неприятных. В глазах бабуина животное менее приятно на 10 с каждым поглаживанием и, когда приятность равна 0, он отпускает животное.

А ежи никогда не могут иметь приятность больше 50. Приятность должна быть инициализирована через генератор случайных чисел, а животные должны иметь родительский класс animal

Язык реализации - C#

Задача:

спроектировать и реализовать структуру классов, моделирующих описанную ситуацию.

написать программу, которая заполняет клетку животными и эмулирует бабуина, который берёт животных с наибольшей приятностью и гладит.

бонус - продумать средство визуализации клетки (массива с животными) на каждом шаге работы программы.

результатом выполнения задания должен быть проект, готовый к запуску. Все необходимые действия по настройке нужно указать в “документации”.

Ограничения:

все классы животных должны наследоваться от одного базового, необходимо свести к минимуму дублирование кода.