Анимация. Движение объектов
Анимация в Си. Движение графического объекта в си.
Рассмотрим программу на си которая перемещает графический объект по экрану Чтобы задать анимацию в си, движение объекта на экране, необходимо в цикле 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. Нарисуйте анимацию двух объектов.Для этого для каждого объекта введите свои переменные для координат и скорости в цикле
движения вызывайте процедуры рисования и стирания для каждого объекта, также необходимо организовать изменение координат для каждого объекта.
Полезно почитать по теме графика в Си
Графика в Си
Графическая программа на Си Узоры концентрическими окружностями
Поделиться
Нет комментариев. Ваш будет первым!