Разработка программного кода, реализующего на основе однодокументного интерфейса движение фигуры на плоскости | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 23 ноября, печатный экземпляр отправим 27 ноября.

Опубликовать статью в журнале

Автор:

Научный руководитель:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №2 (292) январь 2020 г.

Дата публикации: 08.01.2020

Статья просмотрена: 144 раза

Библиографическое описание:

Лобашевская, В. А. Разработка программного кода, реализующего на основе однодокументного интерфейса движение фигуры на плоскости / В. А. Лобашевская. — Текст : непосредственный // Молодой ученый. — 2020. — № 2 (292). — С. 17-20. — URL: https://moluch.ru/archive/292/66104/ (дата обращения: 15.11.2024).



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

Ключевые слова: программный код, пользовательское окно, C++, RGB, движение фигуры, белое перо.

Программа строится на основе мастера MFC AppWizard с форматом окна «Single document» на языке C++.

При создании приложений автоматически создается 4 основных класса:

– CKursovicApp — класс, производный от CWinApp;

– CMainFrame — класс, производный от CFrameView;

– CKursovicDoc — класс, производный от CDocument;

– CKursovicView — класс, производный от CView.

Класс CWinApp образует все прочие элементы приложения, данный класс получает все сообщения о событиях и затем направляет их классам CFrameView и CView.

Класс CFrameView — класс окна, образующий его рамку. Он содержит меню, панель инструментов, полосы прокрутки, а также многие другие видимые объекты, относящиеся к рамке окна. Данный класс определяет какая часть документа является видимой в каждый момент времени.

Класс CDocument содержит структуры, позволяющие хранить и манипулировать вводимыми в документ данными. Данный класс получает информацию, вводимую с помощью класса CView и посылает данному классу информацию для ее дальнейшего отображения. Кроме этого, класс CDocument ответственен за сохранение документа в файле и его считывания.

Класс CView отвечает за графическое представление документа пользователю. Данный класс передает введенную информацию классу CDocument, а также получает от него информацию для графического вывода. Большая часть создаваемого для этого класса дополнительного кода состоит из кода, позволяющего рисовать документ, показывая его пользователю, а также обрабатывать вводимую пользователем информацию.

В данной программе используется движение фигуры с ограничением движения по оси X и Y, поэтому диапазон движения ограничен:

– переменная x должна лежать в диапазоне от 0 до crect.Width (Изменяемая ширина пользовательского окна);

– переменная y должна лежать в диапазоне от 0 до crect.Height (Изменяемая высота пользовательского окна).

Основной код будет написан в классе CKursovicView. Составим общий алгоритм программы:

x1 и y1 — это координаты в пользовательском окне, относительно которых будет рисоваться самолет. Важно понимать, что координатная ось начинается в левом верхнем углу окна. То есть x1 это координата с левого края окна, прибавление ста пикселей необходимо, так как фигура рисуется вокруг этой координаты, то есть имеет ширину. y1 это четыре пятых высоты — низ окна.

Составим алгоритм главного метода, в котором будет происходить движение, myDraw():

Перейдем к коду.

void CKursovicView::myDraw(CDC* pDC) //Движение самолета

{

CKursovicDoc * pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

// TODO: добавьте здесь код отрисовки для собственных данных

CRect crect;

CPen BlackPen, WhitePen;

GetWindowRect(&crect); //Получение ширины и высоты пользовательского окна

WhitePen.CreatePen(PS_SOLID, 100, RGB(255, 255, 255)); //создание белого пера

BlackPen.CreatePen(PS_SOLID, 5, RGB(0, 0, 0)); //создание черного пера

x1 = crect.Width() / crect.Width() + 100;

y1 = crect.Height() * 4 / 5;

pDC->SelectObject(&WhitePen); //выбор пера

Подготовительные работы завершены, осталось нарисовать фигуру и осуществить движение.

Для отрисовки создадим новый метод airplane(). Рисунок состоит из линий и нарисован относительно начальной координаты.

void CKursovicView::airplane(CDC* pDC) //Прорисовка самолета

{

pDC->MoveTo(x1 + 100, y1–100);

pDC->LineTo(x1–100, y1–100);

pDC->LineTo(x1–40, y1–40);

pDC->LineTo(x1–40, y1–20);

pDC->LineTo(x1–20, y1–20);

pDC->LineTo(x1, y1 + 60);

pDC->LineTo(x1 + 100, y1–100);

pDC->LineTo(x1–20, y1–20);

pDC->LineTo(x1 + 100, y1–100);

pDC->LineTo(x1–40, y1–20);

pDC->LineTo(x1 + 100, y1–100);

pDC->LineTo(x1–40, y1–40);

}

Теперь напишем код движения, для этого будем рисовать фигуру, затем стирать ее с помощью белого пера, а затем снова рисовать со сдвигом в несколько пикселей.

while (x1 < crect.Width() * 4 / 10) //разгон

{

pDC->SelectObject(&WhitePen);

pDC->Rectangle(x1–100, y1–100, x1 + 100, y1 + 100); //стирание уже нарисованного самолета

x1 += 7; //сдвиг на несколько пикселей

pDC->SelectObject(&BlackPen);

airplane(pDC);

Sleep(5); //миллисекундная задержка для наглядности движения

}

while (y1 > crect.Height() / 3) //взлет

{

pDC->SelectObject(&WhitePen);

pDC->Rectangle(x1–100, y1–100, x1 + 100, y1 + 100);

x1 += 5; y1 -= 5;

pDC->SelectObject(&BlackPen);

airplane(pDC);

Sleep(5);

}

while (x1 + 105 < crect.Width()) //движение по прямой

{

pDC->SelectObject(&WhitePen);

pDC->Rectangle(x1–100, y1–100, x1 + 100, y1 + 100);

x1 += 3;

pDC->SelectObject(&BlackPen);

airplane(pDC);

Sleep(5);

}

}

После компеляции данного когда, мы получим изображение самолета и его движение. На картинках показан самолет в трех основных положениях: разгон, взлет и полет.

Основные термины (генерируются автоматически): RGB, класс, пользовательское окно, CDC, белое перо, движение фигуры, MFC, TODO, движение, фигура.


Ключевые слова

программный код, пользовательское окно, C++, RGB, движение фигуры, белое перо

Похожие статьи

Разработка программного кода на основе библиотеки MFC и объектно ориентированного подхода

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

Разработка диспетчера параллельного исполнения задач для формирования изображения в авиатренажёре

Разработан программный модуль диспетчера, распределяющего задачи, связанные с формированием изображения при помощи технологии OpenGL, по нескольким потокам выполнения. Разработанный диспетчер использует новый алгоритм распределения задач по потокам, ...

Этапы построения контроллера управления яркостью света

В статье обсуждаются возможности встроенных систем с контроллерами на современной цифровой платформе для решения задач управления освещения помещения светом. Особенностью применения таких систем является работа в реальном времени. Авторы статьи стави...

Построение программного комплекса для генерации звуков барабанов с использованием GAN сетей

В статье рассматривается построение программного комплекса для генерации звуков барабанов с использованием GAN сетей. Программный комплекс работает на клиент-сервер архитектуре и использует нейронные сети WaveGAN для генерации звуков. Результаты, пол...

Моделирование полета квадрокоптера в среде SolidWorks Motion

В статье рассматривается задача моделирования полёта квадрокоптера на базе рамы F450 (APM). Разработаны математические модели движения аппарата по вертикали (взлёт) и в вертикальной плоскости по траектории в виде ломаной. Математические модели реализ...

Создание программы визуализации псевдотрехмерного изображения с помощью рейкастинга

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

Проектирование и реализация базы данных для предприятия

В данной работе представлен вариант реализации базы данных для предприятия, ведущего деятельность в сфере продажи компьютеров и их комплектующих. БД создана с помощью программы Microsoft Access и предназначена для упрощения процесса работы с клиентам...

Программная модель формирования текстуры ткани

В статье описана программная модель формирования текстуры ткани с возможными дефектами для дальнейшего тестирования систем автоматического обнаружения дефектов ткани и их сертификации. Модель позволяет вводить ряд следующих параметров: максимальная ш...

Разработка и отладка программного обеспечения для подавления артефактов в электрокардиограмме

В данной статье описана спроектированная программа, представляющая виртуальную программу для подавления артефактов в электрокардиограмме, написанная в среде Mathcad. Так же был построен график спектральной области, по которому можно найти оптимальное...

Построение трёхмерной модели лица человека путём совмещения множеств трёхмерных точек

Возможности биометрической аутентификации по лицу человека при использовании обычной камеры ограничены точностью алгоритмов реконструкции трёхмерной геометрии по освещению лица. Такие алгоритмы постоянно совершенствуются, однако качество данных, полу...

Похожие статьи

Разработка программного кода на основе библиотеки MFC и объектно ориентированного подхода

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

Разработка диспетчера параллельного исполнения задач для формирования изображения в авиатренажёре

Разработан программный модуль диспетчера, распределяющего задачи, связанные с формированием изображения при помощи технологии OpenGL, по нескольким потокам выполнения. Разработанный диспетчер использует новый алгоритм распределения задач по потокам, ...

Этапы построения контроллера управления яркостью света

В статье обсуждаются возможности встроенных систем с контроллерами на современной цифровой платформе для решения задач управления освещения помещения светом. Особенностью применения таких систем является работа в реальном времени. Авторы статьи стави...

Построение программного комплекса для генерации звуков барабанов с использованием GAN сетей

В статье рассматривается построение программного комплекса для генерации звуков барабанов с использованием GAN сетей. Программный комплекс работает на клиент-сервер архитектуре и использует нейронные сети WaveGAN для генерации звуков. Результаты, пол...

Моделирование полета квадрокоптера в среде SolidWorks Motion

В статье рассматривается задача моделирования полёта квадрокоптера на базе рамы F450 (APM). Разработаны математические модели движения аппарата по вертикали (взлёт) и в вертикальной плоскости по траектории в виде ломаной. Математические модели реализ...

Создание программы визуализации псевдотрехмерного изображения с помощью рейкастинга

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

Проектирование и реализация базы данных для предприятия

В данной работе представлен вариант реализации базы данных для предприятия, ведущего деятельность в сфере продажи компьютеров и их комплектующих. БД создана с помощью программы Microsoft Access и предназначена для упрощения процесса работы с клиентам...

Программная модель формирования текстуры ткани

В статье описана программная модель формирования текстуры ткани с возможными дефектами для дальнейшего тестирования систем автоматического обнаружения дефектов ткани и их сертификации. Модель позволяет вводить ряд следующих параметров: максимальная ш...

Разработка и отладка программного обеспечения для подавления артефактов в электрокардиограмме

В данной статье описана спроектированная программа, представляющая виртуальную программу для подавления артефактов в электрокардиограмме, написанная в среде Mathcad. Так же был построен график спектральной области, по которому можно найти оптимальное...

Построение трёхмерной модели лица человека путём совмещения множеств трёхмерных точек

Возможности биометрической аутентификации по лицу человека при использовании обычной камеры ограничены точностью алгоритмов реконструкции трёхмерной геометрии по освещению лица. Такие алгоритмы постоянно совершенствуются, однако качество данных, полу...

Задать вопрос