Анимация в паскаль Движение графического объекта в паскаль
В этой статье мы научимся перемещать графические объекты программах на паскаль, т.е. создавать анимацию на паскаль
Для эффекта передвижения на экране в программе паскаль, необходимо рисовать графический объект после паузы стирать его и рисовать с новыми координатами.
Общая структура программы для анимации на паскаль
for i:=1 to n do
begin
1 нарисовать объект,
2 подождать какое-то время с помощью команды sleep(время паузы);
3 очистить экран
4 изменить координаты объекта согласно направлению движения и его скорости
end;
5 рисуем конечное положение объекта
Напишем простейшую программу на паскаль, которая перемещает окружность по экрану. Для начала работы с графикой в программах на pascal, необходимо в начале программы подключить графический модуль с помощью команды
uses GraphABC; подробно о работе с графикой в pascal abc.
Простейшая программа на паскаль, в которой окружность перемещается по экрану
Написал FLAPPY BIRD на ПАСКАЛЕ с нуля
uses GraphABC;
var i,x : integer;
begin
setWindowSize(500, 500);
clearwindow(clBlack);
for i:=1 To 100 do
begin
SetPenColor(clBlack);
circle(i,50,20);
sleep(10);
clearwindow();
end;
SetPenColor(clBlack);
circle(i,50,20);
end.
Для того, чтобы запрограммировать перемещение более сложного объекта в графическом режиме паскаль, необходимо создать процедуру рисования объекта, в которую будут передаваться координаты объекта. Тогда структура программы на паскаль для движения сложного объекта
for i:=1 to n do
begin
1 вызвать процедуру рисования объекта с координатами x и y
2 подождать какое-то время с помощью команды sleep(время паузы);
3 очистить экран
4 изменить координаты объекта согласно направлению движения и его скорости
x=x+vx;
y=y+vy;
end;
5 вызвать процедуру рисования объекта с координатами x и y
Напишем программу для передвижения изображения автомобиля по экрану на паскале. Для этого предварительно напишем процедуру, которая рисует изображение автомобиля по координатам. В процедуру передаются координаты x и y, это координаты левого верхнего угла машины, относительно них создаются все объекты машины. Родробно о процедурах в паскаль
procedure car (x, y : integer);
begin
rectangle (x,y,x+100,y+40);
floodfill (x+1, y+1, clRed);
circle (x+20,y+40,15);
floodfill (x+20, y+40, clGray);
circle (x+60,y+40, 15);
floodfill (x+60, y+40, clGray);
rectangle (x+20, y-30, x+70, y);
floodfill(x+22,y-2, clRed);
end;
В теле программы создаются начальные координаты и скорость
x :=100;
y :=200;
v :=2;
В цикле for выполняем алгоритм анимации
for i:=1 To 50 do
begin
SetPenColor(clBlack);
car(x,y);
sleep(10);
clearwindow();
Изменение готовых программ в PascalABC
x := x+v;
end;
После цикла for отрисовываем конечное положение автомобиля.
car(x,y);
Полный текст программы для передвижения автомобиля по экрану на паскале
uses GraphABC;
var i,x,y, v : integer;
procedure car (x, y : integer);
begin
rectangle (x,y,x+100,y+40);
floodfill (x+1, y+1, clRed);
circle (x+20,y+40,15);
floodfill (x+20, y+40, clGray);
circle (x+60,y+40, 15);
floodfill (x+60, y+40, clGray);
rectangle (x+20, y-30, x+70, y);
floodfill(x+22,y-2, clRed);
end;
begin
setWindowSize(500, 500);
clearwindow(clBlack);
x :=100;
y :=200;
v :=2;
for i:=1 To 50 do
begin
SetPenColor(clBlack);
car(x,y);
sleep(10);
clearwindow();
x := x+v;
end;
car(x,y);
end.
Полезно почитать по теме графика на паскаль
Комментарии ( 0 )
Нет комментариев. Ваш будет первым!
Источник: itrobo.ru
Интересные программы на pascal abc
02. Кнопочный калькулятор на PascalABC
На этом уроке мы воспользуемся знаниями о технологии ООП (Объектно-ориентированного программирования) создадим простой кнопочный калькулятор.
На вид наш калькулятор будет иметь примерно такой вид:
Итак начинаем
Как я уже отметил в преамбуле, нам понадобится ООП — подход, а значит будем использовать классы и их экземпляры.
В данном случае мы подключим модуль VCL , который отвечает за создание всевозможных форм и их элементов: кнопок, полей ввода, переключателей, текстовых полей.
Для каждого из вышеперечисленных элементов форм в модуле VCL уже имеются готовые классы, поэтому в отличие от предыдущей статьи (об основах ООП), мы сами классы уже создавать не будем, а будем создавать только экземпляры классов.
В блоке описания переменных мы должны перечислить имена всех этих будущих экземпляров:
Что здесь имеем: MainForm — это экземпляр класса Form, т.е. сама форма — сам «ящик» будущей формы,
Bsum — экземпляр класса Button , т.е. кнопки. Это будет кнопка суммирования,
Braz — экземпляр кнопки Разность
Bpr — экземпляр кнопки Произведение
Bdel — экземпляр кнопки Деление
Bres — экземпляр кнопки Результат
Bclean — экземпляр кнопки Очистить
Т1 — экземпляр поля ввода данных
Также нам потребуется переменная » operation » — она будет содержать в себе номер операции (станет ясно ниже), переменная rint — будет хранить целочисленный результат, переменная rr — будет хранить вещественный результат операции, x1, x2 — это операнды, которые над которыми будут производиться арифметические действия.
А теперь само тело программы:
Сначала создаем последовательно экзепляры всех необходимых нам объектов с нужными нам свойствами:
В скобках у экземпляра формы указыны 4 цифры: (отступ x, отступ y, ширина, высота), где отступ x и отступ y — это отступ левого верхнего угла формы от левого верхнего угла экрана.
Для поля ввода, и экземпляров кнопок отступ х и отступ у — это уже отступ от левого верхнего угла самой формы.
Для экземпляров кнопок сразу задаем свойство «Caption» — заголовок, для каждой кнопки задаем свою надпись.
Обработка методов экземпляров
В этой программе мы будем использовать для экземпляров кнопок методы щелчка мышки — » onClick » — дословно переводится при клике.
При возникновении события «Click» мы для каждого экземпляра вызываем свою процедуру:
Теперь осталось описать перечисленные 6 процедур в области описания процедур:
Для обработки щелчка на кнопке Bsum (суммирование):
В этой процедуре мы заносим в переменную x1 содержимое поля ввода (с одновременным переопределением типа из строкового в целочисленный), и сразу же очищаем это поле. Также переменной operation присваиваем код операции суммирования (в нашем случае это 1).
Для обработки щелчка на кнопке Braz (разность):
Аналогично заносим значение поля ввода в переменную х1, очищаем поле и даем код операции: 2.
Для обработки щелчка на кнопке Bpr (произведение):
Аналогично заносим значение поля ввода в переменную х1, очищаем поле и даем код операции: 3.
Для обработки щелчка на кнопке Bdel (деление):
Аналогично заносим значение поля ввода в переменную х1, очищаем поле и даем код операции: 4.
Для обработки щелчка на кнопке Bres (вычисление результата):
При щелчке на кнопке «=» в переменную x2 заносим содержимое поля ввода. К этому времени в переменной х1 уже хранится первое введенное число, поэтому далее производим вычисление заданного действия. Если код операции был равен 1, то делаем суммирование, если 2, то вычитание, если 3, то умножение, если 4, то деление. При этом результат операции будет находиться в вещественной переменной rr .
Но есть одна проблема: в текстовом поле может быть только строковая переменная. А как преобразовать число в строку. Есть в паскале такая функция: inttostr(x) — она превращает целочисленный тип в строковый. Но у нас результат вещественный (т.к. после операции деления результат всегда бывает только вещественным). Поэтому, нам приходится делать промежуточный перевод вещественной переменной в целую:
rint:=round(rr); — мы в данном случае для этого воспользовались функцией округления. При этом, конечно мы жертвуем результатом деления, отсекая его дробную часть. В этом состоит серъезный недостаток данной программы, который мы будем устранять на следующем уроке.
Осталась последняя процедура — процедура очистки текстового поля.
При обработке щелчка на кнопку Bclean (очистка):
Здесь комментарии излишни — и так все ясно.
Теперь программа полностью завершена.
Вот полный код программы:
На этом будем завершать этот урок. Надеюсь, все было достаточно понятно.
Успехов в написании программы.
Подготовка к тесту
Вопросы теста
- Какой модуль в Паскале отвечает за создание форм?
- Необходимо создать экземпляр Bsum класса Button. Выберите правильную запись этого оператора:
- В операторе Bsum.Caption:=’+ ‘,( где Bsum — экземпляр класса кнопки), за какое свойство отвечает «Caption»?
- В операторе Braz:=Button.Create(80,60,40,40) что означает третья цифра в скобках?
- В операторе Braz:=Button.Create(80,60,40,40) что означает четвертая цифра в скобках?
- В операторе Bsum.OnClick:=BsumClick какое событие кнопки Bsum обрабатывается?
- В операторе x1:=strtoint(T1.caption) для чего нужна функция strtoint ?
- В операторе rint:=round(rr) что делает функция round ?
- В операторе T1.caption:=inttostr(rint) что делает функция inttostr ?
- Экземпляр какого класса создается в этом операторе: T1:=TextBox.Create(30,25,200,25) ?
Источник: aaginfo.ru
Решение задач в программе Паскаль АВС
В презентации рассмотрены основные задачи по программированию в 8 классе по учебнику Босовой Л.Л. В презентации можно найти решение 6 задач как в Паскале, так и в программе Кумир.
Решение задач. Паскаль 1часть.pptx
Решение задач с использованием программы
Решение задач с использованием программы Кумир и АВС Паскаль
Автор презентации учитель информатики МБОУ «Хохольская СОШ» Стрельникова Людмила Васильевна
Стрельникова Людмила Васильевна — автор презентации
Первая задача Вычислить сумму натурального ряда чисел от 1 до
Вычислить сумму натурального ряда чисел от 1 до N.
алг сумма-n
нач
цел s, i, n
s:=0
ввод n
нц для i от 1 до n
s:=s+i
кц
вывод s
кон
Решение на Кумире
Программа №1 на Паскале program n1; var i, n, s: integer; begin write(‘Введите n ’); readln(n); s:=0; for i:=1 to n do s:=s+i; writeln(‘сумма=’,s); end
Программа №1 на Паскале
program n1;
var i, n, s: integer;
begin
write(‘Введите n ’); readln(n);
s:=0;
for i:=1 to n do s:=s+i;
writeln(‘сумма=’,s);
end.
Вторая задача На отрезке от 1 до 7 посчитать значение функции f:=3x+2, при целых значениях х
На отрезке от 1 до 7 посчитать значение функции f:=3x+2, при целых значениях х.
алг Вычисление функции
нач
цел i, f
нц для i от 1 до 7
f:=3*i+2;
вывод ‘i=’,i, нс
вывод ‘f=’,f, нс
кц
кон
Решение на Кумире
Задача
Программа №2 program n2; var i, f: integer; begin for i:=1 to 7 do begin f:=3*i+2; write(‘i=’,i); writeln(‘ f=’,f); end; end
program n2;
var i, f: integer;
begin
for i:=1 to 7 do
begin
f:=3*i+2;
write(‘i=’,i);
writeln(‘ f=’,f);
end;
end.
Третья задача Вычислить сумму квадратов чисел натуральной последовательности от 2 до
Вычислить сумму квадратов чисел натуральной последовательности от 2 до N.
алг сумма квадратов
нач
цел i, s, n
ввод n
s:=0;
нц для i от 2 до n
s:=s + i * i;
вывод ‘i =’, i, нс
вывод ‘сумма= ‘,s, нс
кц
кон
Решение на Кумире
Задача
Программа №3 program n3; var i,s,n:integer; begin write(‘Введите n ’); readln(n); s:=0; for i:=2 to n do s:=s+i*i; writeln(‘ сумма=’,s); end
program n3;
var i,s,n:integer;
begin
write(‘Введите n ’); readln(n);
s:=0;
for i:=2 to n do s:=s+i*i;
writeln(‘ сумма=’,s);
end.
Четвёртая задача Дана натуральная последовательность от 1 до
Дана натуральная последовательность от 1 до N. Вывести эту последовательность от N до 1, то есть в обратном порядке.
алг вывести в обратном порядке
нач
цел i, n
вывод ‘введи целое число- ‘
ввод n
нц для i от n до 1 шаг -1
вывод i, ‘ ‘
кц
кон
Решение на Кумире
Задача
Программа №4 program n4; var i, n: integer; begin write(‘Введите n ’); readln(n); for i:=n downto 1 do writeln(i); end
program n4;
var i, n: integer;
begin
write(‘Введите n ’);
readln(n);
for i:=n downto 1 do
writeln(i);
end.
Пятая задача Вводится целое число
Вводится целое число N. Вывести для нечетных чисел от 1 до N произведение этих чисел, а для четных от 1 до N, вывести их сумму.
алг вывести числа
нач
цел i,n,s,p
ввод n
s:=0; p:=1;
нц для i от 1 до n
если mod (i,2)=0
то s:=s+i
иначе p:=p*i
все
кц
вывод ‘ сумма=’,s, нс
вывод ‘ произведение=’,p, нс
кон
Решение на Кумире
Задача
Программа №5 program n5; var i,n,s,p:integer; begin write(‘Введите n ’); readln(n); s:=0; p:=1; for i:=1 to n do begin if
program n5;
var i,n,s,p:integer;
begin
write(‘Введите n ’); readln(n);
s:=0; p:=1;
for i:=1 to n do
begin
if I mod 2 =0 then s:=s+I else p:=p*i
end;
writeln(‘ сумма=’,s);
writeln(‘ произведение=‘,p);
end.
Шестая задача Дано натуральное число
Дано натуральное число N.
Вычислить
program n6;
var i,n:integer;
s:=real;
begin
write(‘Введите n ’); readln(n);
s:=0;
for i:=1 to n do
s:=s+1/(i*i);
writeln( ‘сумма=’,s:3:5);
end.
Программа №6 в Кумире алг вычисление последовательности нач цел i, n вещ s вывод ‘Введите n = ‘ ввод n s:=0; нц для i от…
Программа №6 в Кумире
алг вычисление последовательности
нач
цел i, n
вещ s
вывод ‘Введите n = ‘
ввод n
s:=0;
нц для i от 1 до n
s:=s+1/(i*i);
кц
вывод ‘сумма=‘, s
кон
Задача
Вычисление степени числа y=an алг
Вычисление степени числа
алг Цикл Для
нач
цел i, n
вещ a, y
вывод ‘степень числа n = ‘
ввод n
вывод ‘число a = ‘
ввод a
Y:=1
нц для i от 1 до n
y:=y*a
кц
вывод ‘y=’, y
кон
Таблица значений переменных Шаг алгоритма
Таблица значений переменных
Источник: znanio.ru