Создание движущихся объектов
USES Graph; VAR x, Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, ); ReadLn; x:=40; repeat SetColor(White); Circle(x,100,10);{Рисуем белую окружность} SetColor(Black); Circle(x,100,10);{Рисуем черную окружность} x:=x+1{Перемещаемся немного направо} until x>600; CloseGraph END.
Корректировка Изображение движущейся окружности может получиться некачественным - окружность в процессе движения может мерцать и пульсировать. Это связано с разверткой электронно-лучевой трубки вашего монитора. Попробуйте изменить радиус окружности или шаг движения по горизонтали или введите между рисованием и стиранием окружности небольшую паузу процедурой Delay - ситуация почти наверняка улучшится.
Процедура Clear uses GraphABC; begin Window.Title := 'Демонстрация простой анимации'; var y := 200; Brush.Color := clGreen; for var x := 70 to 500 do begin Window.Clear(clWhite); Circle(x,y,50); Sleep(3); end; end.
Задание 1. Измените скорость движения. 2. Пусть одновременно движутся две окружности. 3. Одна вниз, другая направо. 4. Заставьте окружность отскочить от правого края экрана. 5. Заставьте окружность бесконечно двигаться, отскакивая от правого и левого краев экрана. 6. Разворот 7. Создать эффект движения для других геометрических фигур. 8. Мыльный пузырь надувается, движется, лопается с эффектом разлетающихся маленьких пузыриков
Redraw uses GraphABC; begin Window.Title := 'Анимация без мерцания'; var y := 200; Brush.Color := clGreen; // Отключаем рисование в окне LockDrawing; for var x := 70 to 500 do begin Window.Clear(clWhite); Circle(x,y,50); // Перерисовываем окно из внеэранного буфера Redraw; Sleep(3); end; end.
uses GraphABC; begin LockDrawing; for var i:=1 to 500 do begin Window.Clear; Brush.Color := clGreen; Ellipse(i,100,i+100,200); Redraw; Sleep(1); end; end.LockDrawingRedraw