Skip to content

Latest commit

 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Проект Симуляция

Представляет собой небольшую экосистему, содержащую поле N*M, различные обьекты и существа, которые каждый ход могут передвигаться или кушать. Программа выполнена в консольном стиле, но составлена заготовка в виде интерфейса для дальнейшего внедрения новых рендеров. Проект в целом следует за требованиями ТЗ, но также имеет некие особенности.

Сущности

  1. 🦓 - Травоядное, каждый ход старается найти траву
  2. 🦁 - Хищник, каждый ход старается найти травоядное и съесть его
  3. 🍀 - Трава, не имеет собственного функционала, но является едой для травоядных
  4. 🌴 - Дерево, на данный момент не имеет собственного функционала
  5. 🌑 - Камень, на данный момент не имеет собственного функционала

Пользовательский интерфейс

simulationInterface

Особенности

  1. Пользователь настраивает симуляцию при старте программы(размер карты, количество ходов, режим рендера)
  2. Два режима рендера(для каждого существа и для всех существа сразу)
  3. Добавлена механика голода для существ
  4. Добавлена механика размножения для существ

Архитектура

Model

  • Entity - абстрактный класс, от которого наследуются животные и обьекты(деревья,камни,трава)
  • Creature - абстрактный класс, от которого наследуются животные(травоядные,хищники)
  • Action - общий интерфейс для инициализации и действий, совершаемых каждый ход
  • initializeActions(InitializeEntityCreator, MapCreator) - действия, совершаемые в начале игры
  • turnActions(AllCreaturesMove, TurnEntityCreator) - действия, совершаемые каждый ход
  • PathFinder - поиск пути по BFS
  • services(CreatureMoveService, HungryService, MultiplyService) - утилитные классы, используемые во время обработки хода, вынесенные в отдельные классы для разделения логики и повторного использования
  • EntityCreator - абстрактный класс, на основе которого происходит спавн сущностей. Содержит коллекцию констант шансов появления существ.
  • EntitySpawnChance - рекорд для удобного хранения шанса появления существ
  • utils(CellUtils, CreatureUtils, MapUtils) - утилиты для работы с координатами, животными, картой

View

  • Renderer - общий интерфейс для всех рендеров, если в дальнейшем нужно будет сделать разные рендереры.
  • ConsoleRenderer - одна из реализаций интерфейса рендерера, отрисовывает карту в консольном виде
  • RenderMode - enum, описывающий методы отрисовки карты, созданный для сокращения кода, а также возможности добавления новых режимов отрисовки в будущем.
  • ConsoleWriter - утилитный класс для вывода информации в консоль

Controller

  • ConsoleInput - утилитный класс для сбора информации из консоли и настройки симуляции в соответствии с решением пользователя
  • Simulation - основной класс, выполняющий ходы

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages