Организация перемещения объекта по заданной траектории 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Организация перемещения объекта по заданной траектории



Цель работы – овладение навыкамиорганизации работы в графическом режиме, использования стандартных функций для работы в графическом режиме, приемами построения графического изображения на экране, перемещения объекта по экрану по заданной траектории, используя функции сохранения изображения в памяти и вывода на экран из памяти.

Задания для самостоятельной подготовки:

1. Изучить:

- особенности организации работы в графическом режиме в изучаемом языке программирования;

- возможности стандартных функций для работы в графическом режиме;

- приемы построения графического изображения на экране;

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

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

Задание к работе:

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

 

Пример выполнения работы

 

Составить и выполнить на ЭВМ программу, перемещающую графическое изображение по экрану по заданной траектории

 

 
 

 

 

 


 


Таблица 14

 

№ 1
№ 2

           
     
 
 

 


 

               
   
 
   
№ 3
 
№ 4
 
 
 
 

 

 

 

 

 

Продолжение таблицы 4

 

                   
 
 
 
 
   
     
№ 14
 
 
     
 
 

 

 


 

Продолжение таблицы 14

 


№ 17
№ 18

           
   
   
 
 
 

 

Программа решения задачи имеет вид:

 

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<graphics.h>

#include<math.h>

#include<dos.h>

/*Данная программа осуществляет перемещение

графического изображения по экрану по

заданной траектории*/

void main()

{int j,gd=0,gm,r=30,startx,starty,x,y,ulx,lrx,uly,lry,size,i,step;

/*i,j - переменные цикла for

gd-графический драйвер, gm-графический режим

r- радиус, startx и starty-начальные координаты

ulx,uly- координаты верхнего левого угла прямоугольника, описанного около изображения

lrx,lry-координаты нижнего правого угла прямоугольника, описанного около изображения

size-размер памяти, который занимает графическое изображение

step- смещение

*/

void *p; //p-указатель на область памяти, где хранится графическое изображение

initgraph(&gd,&gm,"C:\\BC"); //инициализация графической системы

setfillstyle(SOLID_FILL,2); //установка стиля наполнителя

startx=getmaxx()/2-30; //присвоение значений startx, где getmaxx возвращает наибольшее значение

//координаты х

starty=getmaxy()/2;

fillellipse(startx,starty,r,r/3+2); //вычерчивает заполненный текущим наполнителем эллипс

ellipse(startx,starty,190,350,r,r/3);//вычерчивает эллипс

outtextxy(startx-3,starty,"UFO"); //выводит на экран текстовую строку с позиции (startx,starty)

ulx=startx-r-1;

lrx=startx+r+1;

uly=starty-r/3-8;

lry=starty+r/3+3; //расчет координат левого верхнего и правого нижнего углов //сохраняемого графического изображения

size=imagesize(ulx,uly,lrx,lry); //расчет объёма буфера в байтах для сохранения //графического изображения

p=malloc(size); //выделение динамической памяти

_setcursortype(_NOCURSOR); //убирает курсор с экрана

getimage(ulx,uly,lrx,lry,p); //сохранение в р графического изображения

putimage(ulx,uly,p,1); //вывод сохранённого в р изображения с операцией //наложения ИСКЛЮЧАЮЩЕЕ ИЛИ

while(!kbhit()) //в цикле осуществляется перемещение графического изображения

{ //по заданной траектории до тех пор, пока не нажата любая клавиша

x=startx;

y=starty; //задание стартовых координат

step=10; //задание смещения относительно центра

for(j=0;j<=4;j++) //вложенный цикл по заданию номера обхода (5 обходов) из 4 этапов

{

i=0;

while(i<=step) //1 этап (перемещение слева направо)

{

if(!kbhit()) //если не нажата клавиша, то выводит изображение

{putimage(x,y,p,XOR_PUT); //на экран, а затем, путём наложения изображения

delay(2); //самого на себя, удаляет его с экрана

putimage(x,y,p,XOR_PUT);

x++; i++;

}

else return; //если клавиша нажата, то выход из программы

}

 

i=0;

while(i<=step) //2 этап (перемещение сверху вниз)

{

if(!kbhit())

{putimage(x,y,p,XOR_PUT);

delay(2); //приостанавливает выполнение программы на 2 миллисекунды

putimage(x,y,p,XOR_PUT);

y++; i++;

}

else return;

}

 

i=0;

step+=50;

while(i<=step) //3 этап (перемещение справа налево)

{

if(!kbhit())

{putimage(x,y,p,XOR_PUT);

delay(2);

putimage(x,y,p,XOR_PUT);

x--; i++;

}

else return;

}

i=0;

while(i<=step) //4 этап (перемещение снизу вверх)

{

if(!kbhit())

{putimage(x,y,p,XOR_PUT);

delay(2);

putimage(x,y,p,XOR_PUT);

y--; i++;

}

else return;

}

step+=50; // увеличение смещения

}

for(i=0;i<=250;i++) //5 этап (изображение возвращается на

{ //исходное место в центре экрана)

if(!kbhit())

{putimage(x,y,p,XOR_PUT);

delay(2);

putimage(x,y,p,XOR_PUT);

x++; y++;

}

else return;

}

putimage(x,y,p,XOR_PUT);

delay(2);

putimage(x,y,p,XOR_PUT);

}

getch(); //останов выполнения программы до тех пор, пока

//не нажата клавиша

closegraph(); //закрытие графического и возвращение к текстовому режиму

return; //выход из программы

 


Лабораторная работа №16



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 258; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.69.45 (0.029 с.)