графическом режиме в Си координата х увеличивается слева направо,координата y увеличивается сверху вниз. Чтобы задать цвет заполнения графических фигур в си используется оператор setfillstyle (1,номер цвета). Чтобы стереть графический объект в си, можно в качестве цвета передать цвет фона.
Возможный вариант решения программы анимации в си:
#include
#include
// процедура отображения автомобиля с координатами левого верхнего угла 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. Нарисуйте анимацию двух объектов.Для этого для каждого объекта введите свои переменные для координат и скорости в цикле
движения вызывайте процедуры рисования и стирания для каждого объекта, также необходимо организовать изменение координат для каждого объекта.
Достарыңызбен бөлісу: |