Анимация. Движение объектов

12 сентября 2018 - Администратор

Анимация в Си. Движение графического объекта в си.

Рассмотрим программу на си которая перемещает графический объект по экрану Чтобы задать анимацию в си, движение объекта на экране, необходимо в цикле for  выполнять следующие операции
1 нарисовать объект,
2 подождать какое-то время,
3 стереть объект,
4 изменить координаты объекта согласно направлению движения и его скорости
При написании программы будут полезны уроки Графика в Си  Задается процедура рисования  объекта (в нашем случае автомобиля).
Процедуры и функции в Си.В процедуру передаются координаты верхнего левого угла и цвет. В процедуре все составные части автомобиля рисуются относительно верхнего левого угла. В графическом режиме в Си координата х увеличивается слева направо,координата y увеличивается сверху вниз.  Чтобы задать цвет заполнения графических фигур в си используется оператор setfillstyle (1,номер цвета). Чтобы стереть графический объект в си, можно в качестве цвета передать цвет фона.

Возможный вариант решения программы анимации в си:
#include <graphics.h>
#include <conio.h>
// процедура отображения автомобиля с координатами левого верхнего угла x, y  и цветом cvet
void avto (int x, int y, int cvet)
{
setfillstyle (1,cvet );  //  устанавливаем  вид заливки 1 -полный,  цвет заливки  cvet
bar(x, y, x+100, y+20);// закрашенный прямоугольник  нижняя часть кузова
bar(x+20, y, x+70, y-20);// закрашенный прямоугольник верхняя часть кузова
setcolor(cvet); // устанавливаем  цвет  колеса
circle(x+20, y+30, 10); //  левое колесо окружность ниже кузова
circle(x+70, y+30, 10); // правое колесо окружность  ниже кузова
setfillstyle (1,cvet);  //  устанавливаем  вид заливки полный - 1 цвет cvet
floodfill(x+20,y+30,cvet); // закрашиваем круг левого колеса до границы круга  цветом cvet
floodfill(x+70,y+30,cvet); // закрашиваем круг левого колеса до границы круга  цветом cvet
}
main()
{
      int i; // перменная счетчик цикла
      int x; // координата x  автомобиля
      int y; // коордианта y автомобиля
      int v; // сокрость автомобиля
x=50;
y=200;
v=1;
initwindow(500, 500);// инициализируем графическое окно
// движемся
for (i=1; i<300; i++)
{  
    // отрисовываем автомобиль  заданным цветом 2
    avto(x,y, 2);
    // пауза
    delay(20);
     // стираем автомобиль - рисуем его цветом фона 0
    avto(x,y, 0);
     // увеличиваем координату x согласно скорости
    x=x+v;   
}
avto(x,y, 2);
getch();
closegraph();
}

На заметку:
1. Анимация объекта задается алгоритмом 
Цикл движения
рисуем объект
пауза
стирание
изменение координат

Задания для самостоятельной работы:
1. Нарисуйте свой объект измените процедуру avto. Попробуйте сделать движение замедленным или ускоренным, т.е. изменяйте в цикле движения скорость.
2. Нарисуйте анимацию двух объектов.Для  этого для каждого объекта введите свои переменные для координат и скорости в цикле 
движения вызывайте процедуры рисования и стирания для каждого объекта, также необходимо организовать изменение координат для каждого объекта.

 Вернуться к содеражнию

Полезно почитать по теме графика в Си
Графика в Си
Графическая программа на Си Узоры концентрическими окружностями

Поделиться

 
Комментарии (0)

Нет комментариев. Ваш будет первым!