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

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

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

Автор:

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

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

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

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

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

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

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

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

Невозможные фигуры и их моделирование | Статья в журнале...

Виды невозможных фигур. Невозможные фигуры разделяются на два больших класса: одни имеют реальные трехмерные модели, а для других такие создать невозможно.

А значит, всего через четыре лестничных марша путник оказывается там же, откуда начал движение.

Как подготовиться к выступлению на научной конференции...

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

Использование библиотеки SFML для визуализации результатов...

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

Невозможные фигуры, особенности их восприятия и применение

Невозможная фигура — один из видов оптических иллюзий, фигура, кажущаяся

Невозможные фигуры — это геометрически противоречивые изображения объектов, не

Крыши домов, окрашенные в белый и серый. Этот комплекс зданий обладает одним интересным свойством.

Методы определения объектов на изображении | Статья в журнале...

Изначально «Жук» ставится на белый пиксель изображений и движется до тех пор, пока не попадет на черный элемент. Как только «Жук» дойдет до черного пикселя он поворачивает налево и переходит на следующий элемент. Если этот элемент белый, то он поворачивает...

Использование пиктограмм и визуального расписания при работе...

При работе с нашими детьми мы использовали фотографии реальных объектов и действий и постепенно переходим с цветных картинок на чёрно-белые. В своей практике мы используем пиктограммы на всех этапах коррекционной работы с детьми. В помещении нашей группы...

Дизайн компьютерных приложений для визуализации информации...

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

Диагностические задания на выявление знания детьми основных...

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

Программная система для записи и 3D-визуализации...

Захват движения (Motion capture) — это технология для записи движений предметов или актеров, которые затем используются в

Программный модуль для записи и отображения 3D-моделей танцевальных движений представляет собой пользовательский интерфейс, а также...

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

Невозможные фигуры и их моделирование | Статья в журнале...

Виды невозможных фигур. Невозможные фигуры разделяются на два больших класса: одни имеют реальные трехмерные модели, а для других такие создать невозможно.

А значит, всего через четыре лестничных марша путник оказывается там же, откуда начал движение.

Как подготовиться к выступлению на научной конференции...

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

Использование библиотеки SFML для визуализации результатов...

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

Невозможные фигуры, особенности их восприятия и применение

Невозможная фигура — один из видов оптических иллюзий, фигура, кажущаяся

Невозможные фигуры — это геометрически противоречивые изображения объектов, не

Крыши домов, окрашенные в белый и серый. Этот комплекс зданий обладает одним интересным свойством.

Методы определения объектов на изображении | Статья в журнале...

Изначально «Жук» ставится на белый пиксель изображений и движется до тех пор, пока не попадет на черный элемент. Как только «Жук» дойдет до черного пикселя он поворачивает налево и переходит на следующий элемент. Если этот элемент белый, то он поворачивает...

Использование пиктограмм и визуального расписания при работе...

При работе с нашими детьми мы использовали фотографии реальных объектов и действий и постепенно переходим с цветных картинок на чёрно-белые. В своей практике мы используем пиктограммы на всех этапах коррекционной работы с детьми. В помещении нашей группы...

Дизайн компьютерных приложений для визуализации информации...

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

Диагностические задания на выявление знания детьми основных...

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

Программная система для записи и 3D-визуализации...

Захват движения (Motion capture) — это технология для записи движений предметов или актеров, которые затем используются в

Программный модуль для записи и отображения 3D-моделей танцевальных движений представляет собой пользовательский интерфейс, а также...

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