2020 ч а с т ь I молодой ученый


Download 7.93 Mb.
Pdf ko'rish
bet22/92
Sana11.11.2023
Hajmi7.93 Mb.
#1767054
1   ...   18   19   20   21   22   23   24   25   ...   92
Bog'liq
moluch 292 ch1


часть создаваемого для этого класса дополнительного кода 
состоит из кода, позволяющего рисовать документ, пока-
зывая его пользователю, а также обрабатывать вводимую 
пользователем информацию.
В данной программе используется движение фигуры 
с ограничением движения по оси X и Y, поэтому диапазон 
движения ограничен:
— переменная x должна лежать в диапазоне от 0 до 
crect.Width (Изменяемая ширина пользовательского окна);
— переменная y должна лежать в диапазоне от 0 до 
crect.Height (Изменяемая высота пользовательского окна).
Основной код будет написан в классе CKursovicView. 
Составим общий алгоритм программы:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Начало 
OnGoBut t o1() 
myDraw() 
Конец 
x1=crect .Widt h()/ crect .Widh()+100;
y1=crect .Height ()*4/ 5; 


18
«Молодой учёный» . № 2 (292)  . Январь 2020 г.
Информационные технологии
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);



Download 7.93 Mb.

Do'stlaringiz bilan baham:
1   ...   18   19   20   21   22   23   24   25   ...   92




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling