Небольшой pet-проект про симуляцию 2D-экосистемы: в мире живут травоядные и хищники, растёт трава, а некоторые объекты просто занимают клетки и создают препятствия. Проект сделан как пошаговая симуляция, где каждое существо принимает решение и действует в рамках одного тика.
Мир — это сетка N x M, где каждая сущность занимает ровно одну клетку.
В одной клетке не может находиться несколько объектов одновременно.
В симуляции участвуют:
- травоядные и хищники;
- трава как источник пищи;
- статичные объекты (препятствия).
- симуляция работает в состояниях:
RUNNING,PAUSED,STOPPED; - еда ищется через BFS:
- сначала рядом, в соседних клетках;
- если не найдена — поиск в ширину с лимитом
MAX_SEARCH_DEPTH;
- в консоли доступно управление:
Pause / Continue / Exit; - основной цикл работает в отдельном потоке, а пауза ограничена
PAUSE_TIMEOUT_MS.
Здесь я практикую:
- ООП и моделирование поведения агентов;
- применение BFS в реальной задаче;
- многопоточность и управление состояниями;
- проектирование симуляций на Java.
- сделать поведение агентов более “умным”, добавить голод хищников;
- добавить новые типы сущностей и взаимодействий;
- улучшить визуализацию мира;
- выполнить покрытие тестами.