Необходимо для переменных x, y, vx, vy объекта TPoint задать тип float, что обеспечит возможность более плавного изменения их значений. Также рекомендуется аргументам функции MoveXY задать тип float. Затем необходимо будет добавить округление до целого каждой из этих переменных там, где это будет необходимым.
Вектор скорости в основном будет изменяться детерминировано, поэтому надо убрать фрагмент, который реализует изменение вектора скорости в случайные моменты времени.
Важно отметить, что при задании начальных случайных значений vx, vy в конструкторе TPoint::TPoint надо учитывать, что vx, vy – это переменные вещественного типа.
Для имитации действия «силы тяготения» надо перед вызовом obj[i]->MoveXY выполнять изменение obj[i]->vy на некоторое фиксированное значение (например, на значение 0.1). При этом перемещение объектов до нижней границы экрана будет выполняться согласно варианту задания.
Чтобы объекты «отскакивали» от нижней границы экрана надо перед вызовом obj[i]->MoveXY выполнять проверку координаты y объекта obj[i]. Если оказывается, что на следующем шаге этот объект может выйти за пределы нижней границы экрана и появиться в верхней части экрана, то тогда значение obj[i]->vy надо изменить на противоположное. После этого объекты будут «отскакивать» от нижней границы экрана. Для постепенной остановки вертикальных перемещений объекта необходимо при изменении значения obj[i]->vy на противоположное значение выполнять умножение на некоторый фиксированный коэффициент меньше 1 (например, на значение 0.5).
Для проверки траекторий перемещения объектов можно в функции MoveXY временно исключить вызов функции Hide. Естественно, что в окончательном варианте должно обеспечиваться удаление предшествующих изображений объекта, то есть, скорее всего, в функции MoveXY должен быть реализован вызов функции Hide.
Остается реализовать проверку остановки вертикальных перемещений объекта и обеспечить перемещение объекта в верхнюю часть экрана после остановки вертикальных перемещений. Например, если после перемещения координата y объекта больше координаты y нижней границы экрана, уменьшенной на единицу, и его переменная vy по абсолютному значению меньше 0.1, то можно считать, что вертикальные перемещения этого объекта закончились, и с помощью функции MoveXY этот объект можно переместить в верхнюю часть экрана, предварительно установив новые случайные значения для переменныхvx, vy, аналогично тому, как это делается в конструкторе объекта TPoint.
Добавить объект, который отображается в виде двух рядом расположенных букв: первой буквы имени и фамилии студента, выполняющего данное задание. При этом буквы должна быть нарисована с использованием графических элементов (линии, эллипсы, дуги эллипсов), а не с помощью функции GTextXY. Кроме того, размер букв должен случайным образом выбираться при создании соответствующего объекта. В итоге на экране должны случайным образом перемещаться точки, прямоугольники, окружности и пары букв указанного вида. Для того, чтобы сильно не снижать быстродействие программы, рекомендуется размеры букв делать не больше, чем 30 на 30 пикселей, а также общее количество всех объектов не делать слишком большим.
Необходимо написать код с помощью использования библиотеки GRX для этих двух заданий
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |