Второй проект java роадмапа Сергея Жукова. Я начал в начале февраля, Закончил только сегодня, 27 апреля.
Да, в задании писалось, что map должен быть отдельным классом. Но я не понимаю зачем так усложнять, если уже есть класс HashMap<>.
Про поиск в ширину я вообще не понял. Ну у меня с помощью stream реализована такая же логика поиска в ширину. У существа есть карта, и существо находит все ягоды и фильтрует их по близости по расстоянию Чебышёва. Тем самым находится точно такой же результат, какой нужен в поиске в ширину. Существо не обходит все клетки по порядку, существо с помощью stream фильтрует съедобное и ищет среди них ближайшое.
Мне жутко неудобно смотреть через консоль. Поэтому я навайбкодил себе графический и веб интерфейсы. Если так принципиально видеть работу без AI - можете запустить класс Main - он тоже работает. (Правда, смотреть через консоль очень неудобно)
Класс Iwe - класс "Ямы". Не ивы. Я переводится как "I", а Мы переводится, как "We". В будущем для развития проекта они могут быть использованы как то, где могут застревать объекты. Для учебного проекта я такую логику посчитал излишней, и пока что животные также обходят ямы как деревья, тут у них функционал не отличается.
Пока что волк 🐺 гонится за зайцем и никак догнать не может, так как скорость у них одинаковая. Я посчитал разную скорость излишней для учебного проекта, поэтому все ходят по 1 клетке за один ход. С уроном от удара волка я заморачиваться не стал, так как это не реалистично. В жизни если волк поймал зайца, то он его съедает сразу.
Я вижу, что класс Simulation можно разбить на несколько классов. Но тогда вместо количества строк кода увеличится количество классов. А у меня их 22, если не учитывать классы, которые мне навайбкодил клод. Тут нужно ловить компромисс между количеством ответственности класса и увеличением структуры проекта. Вот я посчитал, что около 200 строк кода в Simulation, а также количество ответственности класса Simulation - это достаточно, чтобы не разбивать. Я посчитал, что 4-5 классов по 50 строк сложнее читать, чем один главный класс на 200 строк.
Вайбкод у меня только во всей папке web, докерфайле и в классе SimulationApp
Чтобы открыть графический интерфейс из этого класса, введите в cmd
mvn javafx:run
Во всех остальных классах я почти всё сам делал.