Лабораторный практикум №8
Проект Ocean
Разработать систему имитационного моделирования Океан. Моделируется замкнутая экологическая система по принципу хищник-жертва.
В системе рассматриваются сущности:
- Ocean - двумерная матрица ячеек.
- Cell - ячейка океана, которая может быть либо пустой, либо содержать объект.
- Stone - неподвижный объект океана, просто занимающий ячейку.
- Prey - рыба-жертва. Передвигается случайным образом по океану, размножается и умирает через заданные промежутки времени.
- Predator - рыба-хищник. Передвигается по океану, поедает рыбу-жертву, размножается. Может умереть от голода.
Консольная версия
Каждый объект в океане отображается на экране определенным символом. Моделирование предполагает случайное распределение в океане заданного количества камней, жерт и хищников (начальное состояние) и пошаговое изменение состояния океана. Все объекты в течении шага делают свой ход. После этого на экран выводится карта океана и процесс зацикливается.
[[]
На приведенном скриншоте показана i-ая итерация океана. Жерты обозначены символом 'f', хищники - 'S'. Видно, что количество жерт существенно больше числа хищников, что создает для последних благоприятные условия для питания и размножения. На экране отображается порядка 5000 объектов.
GUI-версия
Разработать QT-версию программы с отображением данных в графическом окне. Могут быть следующие варианты:
- объекты в океане отображаются в виде цветных точек (пикселей);
- объекты отображаются маленькими пиктограммами (содержимое берется из файлов);
- объекты отображаются графическими примитивами (при использовании библиотеки OpenGL).
Сетевая версия
Разработать сетевую версию Океана, в которой моделирование и отображение осуществляются серверной стороной, а клиент получает статистические данные о моделировании (возраст океана, количество объектов). Написать клиентскую часть в виде QT-приложения, отображающую на форме статистические данные в виде графиков.