Структурная схема ПО с пошаговой детализацией

Основная программа

Инициализация

Моделирование подпрыгивания

Завершить

Инициализация

Нарисовать меню

Задание параметров

Инициализация мяча

Нарисовать рельефную поверхность

Моделирование подпрыгивания

Цикл Пока не прервано

Переместить мяч

Проверить касание

Анимировать

Все-Цикл

Инициализация мяча

Задать координаты центра мяча X и Y

Задать радиус Radius

Задать начальную скорость ZeroSpeed

Задать начальный угол движения Alpha

Задать начальные координаты движения ZeroX := X; ZeroY := Y;

Задать текущее время TimeMoment := 0

Переместить мяч

Увеличить текущее время

Рассчитать координаты мяча

X := ZeroX + TimeMoment * ZeroSpeed * Cos(Alpha)

Y := ZeroY + TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * Sqr(TimeMoment) / 2

Рассчитать скорость мяча

Speed := Sqrt(Sqr(TimeMoment * ZeroSpeed * Cos(Alpha)) +

Sqr(TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * TimeMoment))

Проверить касание

Найти минимальное расстояние до поверхности Smin

Найти расстояние от мяча до границ экрана S.

Если Smin <= Radius или S <= Radius, то

Рассчитать параметры движения

Рассчитать параметры движения

Найти угол падения Teta

Рассчитать угол Alpha := Pi – Teta

Задать начальную скорость ZeroSpeed := Speed

Задать текущее время TimeMoment := 0

Задать начальные координаты движения ZeroX := X; ZeroY := Y;

Программа

Нарисовать меню

Задание параметров

Задать координаты центра мяча X и Y

Задать радиус Radius

Задать начальную скорость ZeroSpeed

Задать начальный угол движения Alpha

Задать начальные координаты движения ZeroX := X; ZeroY := Y;

Задать текущее время TimeMoment := 0

Нарисовать рельефную поверхность

Цикл Пока не прервано

Увеличить текущее время

Рассчитать координаты мяча

X := ZeroX + TimeMoment * ZeroSpeed * Cos(Alpha)

Y := ZeroY + TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * Sqr(TimeMoment) / 2

Рассчитать скорость мяча

Speed := Sqrt(Sqr(TimeMoment * ZeroSpeed * Cos(Alpha)) +

Sqr(TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * TimeMoment))

Найти минимальное расстояние до поверхности Smin

Найти расстояние от мяча до границ экрана S.

Если Smin <= Radius или S <= Radius, то

Найти угол падения Teta

Рассчитать угол Alpha := Pi – Teta

Задать начальную скорость ZeroSpeed := Speed

Задать текущее время TimeMoment := 0

Задать начальные координаты движения ZeroX := X; ZeroY := Y;

Анимировать

Все-Цикл

Завершить

Структуры данных

Для работы программы необходимы структуры данных, описывающие следующие сущности: мяч, параметры движения мяча, поверхности. Далее приведено математическое описание структур данных, и проекция на физические типы языка Object Pascal.

Мяч = < X; Y; Скорость; Радиус >,

где X, Y Структурная схема ПО с пошаговой детализацией - student2.ru R – координаты центра мяча;

Скорость Структурная схема ПО с пошаговой детализацией - student2.ru R – текущая скорость мяча Структурная схема ПО с пошаговой детализацией - student2.ru ;

Радиус Структурная схема ПО с пошаговой детализацией - student2.ru {0,1,2... 2 147 483 648} – радиус мяча.

Физически данные о мяче можно представить в виде записи. Координаты X и Y, а также Скорость необходимо представить типом Double, Радиус типом Integer.

Параметры движения мяча = < X0; Y0; Xp; Yp; Начальная скорость; Альфа; Текущее время >,

где X0, Y0 Структурная схема ПО с пошаговой детализацией - student2.ru R – координаты центра мяча в момент времени t0=0;

Xp; Yp Структурная схема ПО с пошаговой детализацией - student2.ru R – координаты центра мяча в предыдущий момент времени;

Начальная скорость Структурная схема ПО с пошаговой детализацией - student2.ru R – скорость мяча Структурная схема ПО с пошаговой детализацией - student2.ru в момент времени t0=0;

Альфа Структурная схема ПО с пошаговой детализацией - student2.ru R – угол наклона вектора скорости относительно оси абсцисс в момент времени t0=0;

Текущее время Структурная схема ПО с пошаговой детализацией - student2.ru R – текущее время движения по параболе.

Физически параметры движения мяча также можно представить с помощью типа record, с полями типа Double.

Поверхность = {Точкаi| i = 0..n },

где Точкаi – точечная пара X,Y;

n – ширина поверхности.

Физически поверхность удобно представить в виде динамического массива точек.

Наши рекомендации