|
1 / 1 / 0
Регистрация: 20.09.2019
Сообщений: 61
|
|
Моделирование процессов на карте04.10.2019, 19:21. Показов 2233. Ответов 13
Метки нет (Все метки)
Здравствуйте!
Есть задача смоделировать процесс жизни зайцев и волков на карте, которая есть поле размером N на M. Вкратце: за шаг времени осуществляется ряд действия: животные перемещаются, размножаются, погибают и т.д. Как лучше смоделировать подобный процесс на C++ ? Можете предложить похожие проекты? Решение есть, но хочется увидеть другие способы, может быть более интересные и эффективные.
0
|
|
| 04.10.2019, 19:21 | |
|
Ответы с готовыми решениями:
13
«Моделирование процессов преобразования информации в сопроцессоре» Моделирование случайных процессов Моделирование реальных процессов |
|
2645 / 1656 / 267
Регистрация: 19.02.2010
Сообщений: 4,387
|
||
| 04.10.2019, 20:26 | ||
|
Вернее, там океан, но не в объёме, а в виде плоскостного среза. Т.е. океанских хищников и жертв переобозвать зайцами и волками - и будет то, что Вам надо. Перемещаются, размножаются, хищники кушают жертв,..
0
|
||
|
1 / 1 / 0
Регистрация: 20.09.2019
Сообщений: 61
|
|
| 05.10.2019, 11:29 [ТС] | |
|
XLAT, да, конечно, ООП
1
|
|
|
Just Do It!
|
||
| 05.10.2019, 14:09 | ||
|
мгновенное(стандартное имхо) решение так: 1. есть карта(двумерный массив) 2. волки и зайцы это объекты с полиморфным интерфейсом. 3. контейнер список(list) содержит указатели на полиморфные объекты animal. 4. стартовый инициализатор всего этого дела. 5. в общем цикле while(true) 6. В цикле(форич) проходим по методам animal.update() 7. В цикле(форич) проходим по методам animal.draw() 9. End. вот примерно так. дальше уже нюансы, например такие как: animal.update() разделить на два цикла с пробегами по: 1. animal.step() 2. animal.behavior() или не делить. и тд и тп.. это будет сказываться 1. на движение жизни на карте. 2. тупо оптимизация(скорость выполнения на цпу одного прохода по всем объектам) далее моделирование самого поведения здесь вообще вариантов уж фантастически множество, но это потом. ![]() ну, еще мелкий вопрос: на чем визуализовать? 1. тупо консоль 2. консоль с windows.h 3. freeglut и т.п..
0
|
||
|
1 / 1 / 0
Регистрация: 20.09.2019
Сообщений: 61
|
|
| 05.10.2019, 18:28 [ТС] | |
|
XLAT, ну да, примерно так и есть.
визуализация по условию задачи - псевдографика, но хотелось бы что-нибудь поинтереснее. Что посмотреть на эту тему? Простая графика - мордашки животных раз в секунду меняют клетку, где каждая клетка текстура травы.
0
|
|
|
Just Do It!
|
|||
| 05.10.2019, 18:54 | |||
|
сразу сообразил, что конечный результат это есть функция(например количество шагов после которых волки умрут от голода. потому что съели всех зайцев) с множеством входных параметров на на входе, т.е. этапе инициализации. наверно интересно будет найти такие условия, когда система будет находиться в максимально устойчивом состоянии, т.е. максимально долго(заданное число шагов прохода по объектам) в константном диапазоне численности волков и зайцев. ![]() ... я бы взял freeglut или glfw http://freeglut.sourceforge.net/ https://www.glfw.org
0
|
|||
|
1 / 1 / 0
Регистрация: 20.09.2019
Сообщений: 61
|
||||||
| 05.10.2019, 19:15 [ТС] | ||||||
|
XLAT, моделирование это и есть конечная цель, а графика - дополнение.
Меня вот еще что интересует - как лучше сделать процесс поедание зайца волком? По условию волк поедает зайца тогда, когда он оказывается на одной клетке, т.е. координаты двух объектов класса Animal в массиве animals совпадают и их подклассы не совпадают (Wolf != Rabbit). Правильно ли будет сделать так: Итерировать массив animals, есть условие совпадает, то на карте делаем соответствующую пометку, а сам объект удаляем деструктуром? Повторяем процесс итерации.
Если же волк достаточно сыт, то происходит размножение, то есть добавляем новый объект подкласса Wolf в animals
0
|
||||||
|
Just Do It!
|
|||||||
| 05.10.2019, 19:42 | |||||||
|
кстати зайцы тож так могут делать ![]() иначе что? для зайцев рандомная морковка? например такая схема(псевдокод)
0
|
|||||||
|
1 / 1 / 0
Регистрация: 20.09.2019
Сообщений: 61
|
|
| 06.10.2019, 10:03 [ТС] | |
|
XLAT, конечно, все животные обладают свойством умирать по достижению k возраста. Я не раскрыл все условия задачи. В общем, все законы экосистемы учтены так, как требует адекватная модель.
Не подскажешь как точно определить размер массива с указателями на классы? Я попытался сделать через идиому (sizeof(a)/sizeof(*a)), с некоторыми изменениями (ведь это массив указателей, а не просто массив элементов), однако не работает. Как будет корректно использовать эту идиому в данном случае?
0
|
|
|
Just Do It!
|
|||||||||||||||||
| 06.10.2019, 12:27 | |||||||||||||||||
0
|
|||||||||||||||||
|
Just Do It!
|
||||||
| 07.10.2019, 21:16 | ||||||
|
constantin01,
демка-черновик
чуть определиться с поведением зверья + чуть больше фич и можно прикручивать OGL
0
|
||||||
|
Just Do It!
|
|
| 27.02.2024, 15:18 | |
|
было продолжение.
код ниже от 4 февраля 2021 года. что оно такое - залил на рутуб: https://rutube.ru/video/privat... JGgCzezSQg вспомнил про этот минипрожэкт, как о иллюстрации к разговору с Адатто о возможных порядков теоретических построений ...
0
|
|
|
Just Do It!
|
|
| 27.02.2024, 15:45 | |
|
0
|
|
| 27.02.2024, 15:45 | |
|
Помогаю со студенческими работами здесь
14
MVC моделирование процессов Моделирование геологических процессов Моделирование переходных процессов Моделирование случайных процессов Математическое моделирование физических процессов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|