Исходник программы, показывающей пример создания игры - симулятора американских горок с физикой, максимально приближенной к настоящей.
Программа позволяет пользователям:
- загружать и сохранять дизайны дорожек (используются кривые Безье)
- изменять трек или создавать новые треки с холмами и петлями
- указывать произвольные свойства тележек и поезда
- устанавливать параметры моделирования, гравитации, масштабирования времени, начальную точку трека и т.д.
- при желании можно ставить движение поезда на паузу и переходить в пошаговый режим
Класс TCoaster - это потомок TPaintBox, содержащий свойства и методы для тележки и трека виртуального мира, а также информацию для отображения каботажного устройства на экране. Я называю это «псевдо» компонентом. Он имеет функции компонента, но не требует установки и берет свои визуальные характеристики (расположение, размер и родительский элемент) из информации, переданной во время создания.
Масштабирование
Операции масштабирования поддерживают внешние представления в реальных единицах измерения и, для повышения эффективности, сохраняют внутренние значения в единицах, основанных на пикселях. В TCoaster существует ряд свойств для поддержки автоматического преобразования по мере необходимости.
Масштабирование было самой большой головной болью при разработке этой программы. Я думаю, что это, по крайней мере частично, связано с кумулятивными различиями, возникающими при аппроксимации непрерывного пути с помощью набора отрезков. Характеристики запуска, особенно экстремальные, могут зависеть от разрешения экрана или количества выбранных отрезков линии. Кроме того, программа пытается поддерживать соотношение высоты и ширины при любом разрешении экрана. Для этого мы отслеживаем максимальные и минимальные координаты x и y в координатах виртуального мира, а% изображения - это ширина и высота - всего 8 чисел. Они сохраняются и восстанавливаются в файлах каботажного корабля.
Более подробное описание принципов работы отдельных частей программы находится в архиве с исходником.