: 25
Анимация в Pascal ABC — закат солнца. (Очень нужна помощь, доделать программу)
Помогите, пожалуйста, доделать программу. программу взяла отсюда же, немного доработала, но дальше не получается. Солнце опускается вниз(перерисовка) и останавливается посередине. Дальше нужно копированием сделать так, чтобы оно шло вправо до конца. Буду очень благодарна, так как нет возможности сейчас самой долго разбираться.
Вот код:
program abc; uses graphABC,PointRect; var y, x1, y1 , pic, i, j, k: integer; re:Rect; begin setwindowsize(900, 600); lockdrawing; y1 := 0; x1 := 450; for i := 1 to 25 do begin clearwindow; if y1 >= 400 then begin setpencolor(clBlack); setbrushcolor(clBlack); rectangle(0, 0, 900, 200); setpencolor(clBlack); setbrushcolor(clBlack); rectangle(0, 200, 900, 400); end else if y1 >= 300 then begin setpencolor(rgb(39, 33, 61)); setbrushcolor(rgb(39, 33, 61)); rectangle(0, 0, 900, 200); setpencolor(rgb(39, 33, 61)); setbrushcolor(rgb(39, 33, 61)); rectangle(0, 200, 900, 400); end else if y1 >= 200 then begin setpencolor(rgb(48, 43, 98)); setbrushcolor(rgb(48, 43, 98)); rectangle(0, 0, 900, 200); setpencolor(rgb(48, 43, 98)); setbrushcolor(rgb(48, 43, 98)); rectangle(0, 200, 900, 400); end else if y1 >= 100 then begin setpencolor(rgb(57, 49, 133)); setbrushcolor(rgb(57, 49, 133)); rectangle(0, 0, 900, 200); setpencolor(rgb(57, 49, 133)); setbrushcolor(rgb(57, 49, 133)); rectangle(0, 200, 900, 400); end else begin setpencolor(clAqua); setbrushcolor(clAqua); rectangle(0, 0, 900, 200); setpencolor(clAqua); setbrushcolor(clAqua); rectangle(0, 200, 900, 400); end; setpencolor(clyellow); setbrushcolor(clyellow); y1 := y1 + 8; circle(x1, y1, 50); setpencolor(clTeal); setbrushcolor(clTeal); rectangle(0, 400, 900, 600); if y1
Источник: www.programmersforum.ru
Анимация в PascalABC
Простая анимация на языке программирования PascalABC
Материал для внеурочной деятельности в 6 классе. Программирование с помощью языка PascalABC. Создание эффекта анимации за счёт смены четырёх изображений, бегущая, по дороге с камнями, собака за падающим листком. Знакомство с декартовой координатой. Рисование линий, дуг, прямоугольника.
Использование цикла с параметром, датчика случайных чисел. Работа с градацией цвета rgb, выбор палитры.
Павлова Наталья Николаевна
Содержимое разработки
Простая анимация на языке программирования PascalABC
Среда программирования: PascalABC
Одно из заданий внеурочной деятельности в 6 классе, демонстрация простой анимации за счёт смены четырёх изображений, с помощью модуля GraphABC.
В качестве примера выбраны в декартовой координате четыре разных позиции объектов: собака, туча, лист, дорога с камнями. Для этого нам понадобится следующие инструменты:
Процедура ClearWindow (color); — очищает графическое окно указанным цветом, после этого выполняются команды следующего рисунка.
Как сделать игру Теннис на Паскале
Процедура sleep(n); — экранная задержка, позволяет замедлить смену одного рисунка на другой.
Процедура цикла с параметром for j:=0 to n do и random(n)+p задаёт выбор случайным образом координат x и y для рисования чёрточек на дороге.
Сначала задаём количество смены объектов. Для упрощения это цикл от 1 до 1. Разграничим экранную страницу на две части, небо и дорогу. На небе изобразим тучу используя оператор аrc(x,y,r,a1,a2) (рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX), закрасим её, на дороге лежат камни. Рисуем падающий лист в основном оператором Line(x1,y1,x2,y2) (рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2) и LineTo(x,y) (рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y)).
USES graphabc ;
var i,j,x,y: integer ;
setwindowsize(325,310); //размер экрана
setpenwidth(3); // толщина пера
for i:=1 to 100 do //количество воспроизведенных рисунков
floodfill(5,5,rgb(97,202,248)); // закрашиваем небо
setpencolor(rgb(220,242,248)); //выбор цвета облака
//рисование листа с выбор цвета и толщены кисти
setpencolor(rgb(0,0,0));
Источник: videouroki.net
Анимация в Pascal ABC Нарисуем сначала самую
program а; uses Crt, graph. ABC; begin circle(100, 200, 60); end.
В Паскале нет команды движения. Как же заставить двигаться окружность?
Нарисовали окружность Стерли Нарисовали в другом месте Чтобы у нас окружность стиралась и рисовалась много раз нам необходимо задать цикл
program h; uses Crt, graph. ABC; var x: integer; begin circle(100, 200, 60); for x : = 1 to 300 do begin circle(100+х, 200, 60); end; end. program h; uses Crt, graph. ABC; begin
Delay (задержка) –в скобках, в качестве параметра передается величина (в миллисекундах) необходимой задержки Например DELAY(20) Clearwindow-стирает, стереть – значит нарисовать ее на том же месте, но цветом фона
program h; uses Crt, graph. ABC; var x: integer; Begin begin for x : = 1 to 300 do Begin begin clearwindow; circle(100+х, 200, 60); delay(100) end; end.
Так же можно делать анимацию, использую уже готовые рисунки
Действия с рисунком n: = Load. Picture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка в целую переменную n. Если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате. bmp, . jpg или. gif. Draw. Picture (n, x, y) — выводит рисунок с описателем n в позицию (x, y) графического окна. Draw.
Picture (n, x, y, w, h) – устанавливает ширину (w) и высоту (h) рисунка Set. Picture. Transparent(n, true) — устанавливает (b = True) или отключает (b = False) режим прозрачности при рисовании рисунка с описателем n. Если b = True, то при его рисовании фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка. Sleep(ms) — осуществляет паузу в выполнении программы на ms миллисекунд Использование процедуры перерисовки Redraw позволяет избежать моргания экрана.
Пример Пусть автомобиль перемещается на фоне здания и деревьев слева направо на расстояние 400 пикселей. Загрузим изображения фона и автомобиля из файлов gorod. gif и avto. jpg, поместив их описатели в переменные fon и avto. Установим прозрачность фона для изображения автомобиля Set. Picture. Transparent(avto, true). Зададим начальные координаты (х, у), ширину w и высоту h изображения автомобиля.
Все переменные имеют тип integer. Процедуры рисования и стирания будем повторять в цикле с предусловием While до тех пор, пока автомобиль не переместится на 400 пикселей. На каждом шаге цикла координату х левого верхнего угла изображения увеличиваем на 10. Ширину уменьшаем на 2, а высоту на 1 пиксель для уменьшения изображения при удалении.
program Avto 1; uses Graph. ABC; var fon, avto, x, y, w, h: integer; begin Set. Window. Size (600, 300); fon: = Load. Picture (‘город. gif’); avto: = Load. Picture (‘автомобиль. jpg’); Set. Picture.
Transparent (avto, true); x: = 10; y: = 170; w: = 240; h: = 100; while x < 400 do begin Clear. Window; Draw. Picture (fon, 0, 0); Draw. Picture (avto, x, y, w , h); x: = x + 10; w: = w — 2; h: = h — 1; sleep (20); Redraw; end.
Источник: present5.com