Написать программу которая выводит на экран шар движущийся по вертикали

простите, а чем Вам помочь? Вы же, как вижу, ничего не делаете?

И объясните,пожалуйста, сам код

Какой код? Который нужно написать вместо Вас?!

p.s. а вообще, всё очень просто.
пишете процедуру, которая выводит шарик в заданных координатах X,Y
добавляете в эту процедуру параметр, каким цветом выводить шарик — если выводится цветом фона, то шарик просто стирается.
дальше

задали начальное значение X,Y в цикле вывели шарик в координатах X,Y сделали маленькую паузу стёрли шарик в координатах X,Y изменили X,Y на deltaX,deltaY (при изменении проверять, прошли ли контрольные точки и менять deltaX,deltaY на нужные направления) повторять цикл, пока координаты X,Y не достигли конечной величины.

Источник: www.programmersforum.ru

Анимация движения и ударов шара в паскаль

Анимация в паскаль. Моделирование движения шара и упругих отражений от стен.

В этой статье мы разберем еще один пример графической анимации в паскаль.Мы напишем программу на Abc Pasacal в которой будет моделироваться движение шара в коробке. Шар при столкновении со стенками и границами экрана упруго отражается.

Сделал 3D в консоли с нуля | трассировка лучей


Чтобы смоделировать движение шара в программе на паскаль,
вводятся переменные отвечающие за координаты центра и проекции скорости на ось x и ось y
x:=70;
y:=120;
vx:=2;
vy:=1;
Чтобы задать перемещение объекта в программе паскаль необходимо нарисовать объект, через паузу стереть его и изменить координаты центра объекта
SetPenColor(clBlack);
circle(x,y,r);
sleep(20);
SetPenColor(clWhite);
circle(x,y,r);
x:=x+vx;
y:=y+vy;
Чтобы смоделировать в программе отражение от стены необходимо при пересечении границы поменять знак проекции скорости объекта. Например отражение от левой стены задается условием
if (x
vx:=-vx;
end;
Отражение от правой стены задается условием
if (x>500-r) then begin
vx:=-vx;
end;
Аналогично в программе задаётся отражение от верхней границы и нижней, только меняется проекция скорости на ось y это vy
if (y>500-r) then begin
vy:=-vy;
end;
if (y
vy:=-vy;
end;
Полная версия программы на abc pascal графической анимации, в которой моделируется движение и упругие удары, отскоки шара.
uses GraphABC;
var i,x,y,vx,vy,r,xs1,xs2,ys1,ys2 : integer;
begin
x:=70;
y:=120;
vx:=2;
vy:=1;
r:=5;
setWindowSize(500, 500);
for i:=1 To 1000 do
begin
SetPenColor(clBlack);
circle(x,y,r);
sleep(20);
SetPenColor(clWhite);
circle(x,y,r);
x:=x+vx;
y:=y+vy;
if (x>500-r) then begin
vx:=-vx;
end;
if (x
vx:=-vx;
end;
if (y>500-r) then begin
vy:=-vy;

Читайте также:
Табличные процессоры примеры программ

Движение круга в PascalABC


end;
if (y
vy:=-vy;
end;
end;
SetPenColor(clBlack);
circle(x,y,r);
end.

анимация движения шара в паскаль

Полезно почитать по теме анимация и графика в abc pascal:
Анимация в Паскаль
Графика в Паскаль

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

Источник: itrobo.ru

задачи на движение в паскале. Программа на паскаль, в которой окружность перемещается по экрану

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 52.4 Kb.

Простейшая программа на паскаль, в которой окружность перемещается по экрану

var i,x : integer;

for i:=1 To 100 do

Процедура LockDrawing;

Рисование средствами PascalABC происходит очень медленно. Пока оно идет, картинка на экране успевает много раз обновиться. Отсюда мерцание. То есть, мы видим не окончательную картинку, а процесс ее рисования. Окончательную картинку в общем-то не видим — как только она построилась, мы ее тут же стираем и начинаем новый цикл рисования.

Для борьбы с этим эффектом придумали двойную буферизацию. Идея в том, чтобы сначала построить картинку в памяти (не выводя на экран), а затем отобразить новый кадр на экране целиком, без промежуточных вариантов, где не хватает половины лучиков. Для этого в начале программы вызываем процедуру LockDrawing.

Процедура ClearWindow (color);

После каждой прохода по циклу очищает графическое окно указанным цветом, который передается в качестве параметра.

После этого все команды рисования будут создавать картинку в памяти (в так называемом вторичном буфере). Непосредственно на экране ничего рисоваться не будет. После того, как очередной кадр анимации полностью отрисован (то есть перед ClearWindow), нужно вызвать процедуру

Эта процедура вызовет перерисовку всей картины.

Нарисуем сначала четыре окружности.

program animation;

uses GraphABC;

SetWindowSize(400, 400); //Размерокна

Читайте также:
Программа для авто объявлений

//Отрисовка четырех окружностей.

Circle (100, 100, 20);

Circle (300, 100, 20);

Circle (100, 300, 20);

Circle (300, 300, 20);

Второй стадией, будет отрисовка пятой окружности и с помощью вышеуказанных процедур и цикла заставим его двигаться по заданной траектории.

program animation;

uses GraphABC;

var i : integer;

//Движение от первой точки до второй

for i:=100 to 300 do

Circle (100, 100, 20);

Circle (300, 100, 20);

Circle (100, 300, 20);

Circle (300, 300, 20);

Circle (i, 100, 20);

//Движение от второй точки до третьей

for i:=100 to 300 do

Circle (100, 100, 20);

Circle (300, 100, 20);

Circle (100, 300, 20);

Circle (300, 300, 20);

Circle (300, i, 20);

for i:=300 downto 100 do

Circle (100, 100, 20);

Circle (300, 100, 20);

Circle (100, 300, 20);

Circle (300, 300, 20);

Circle (i, 300, 20);

//Движение от четвертой точки до первой

for i:=300 downto 100 do

Circle (100, 100, 20);

Circle (300, 100, 20);

Circle (100, 300, 20);

Circle (300, 300, 20);

Circle (100, i, 20);

Движение шарика

Алгоритм движения следующий: пером красного цвета рисуем параметризованную окружность (изменяемые параметры — координаты центра), заливаем круг внутри окружности красным цветом. Делаем задержку. Очищаем экран в цвет фона (т.е. стираем шарик). За счет изменения параметра получаем необходимое смещение шарика.

Пример программы, где шарик движется по диагонали.

Uses GraphABC;
var i:integer;

procedure shar(a:integer);
var k,m:integer;
begin
SetPenColor(clRed);
Circle(a,a, 50);
FloodFill(a,a,clRed );
for k:=1 to 100000 do m:=m+1;
ClearWindow(clSilver );
end;

begin
SetWindowHeight(500);
SetWindowWidth(500);
ClearWindow(clSilver );
for i:=1 to 500 do shar(i);
end.

Задание 1 . Измените цвет шарика на зеленый, а цвет фона на желтый.

Читайте также:
Предшкольная подготовка к школе программа

Задание 2. Измените программу таким образом, чтобы шарик двигался по горизонтали в центре окна.

Задание 3. Измените программу таким образом, чтобы шарик двигался по вертикали в центре окна.

Задание 4. Измените программу таким образом, чтобы шарик двигался по второй диагонали сверху вниз.

2. Изменение размера шарика

Пример программы рисующей раздувающийся пузырь. Центр пузырика стоит на месте, увеличивается радиус.

Uses GraphABC;
var i:integer;

procedure shar(a:integer);
var k,m:integer;
begin
SetPenColor(clSkyBlue);
Circle(250,250, a);
FloodFill(250,250,clSilver);
for k:=1 to 100000 do m:=m+1;
ClearWindow(clSilver );
end;

begin
SetWindowHeight(500);
SetWindowWidth(500);
ClearWindow(clSilver );
for i:=1 to 250 do shar(i);
end.
Задание 1. Измените цвет пузырика и цвет фона.
Задание 2. Измените программу таким образом, чтобы пузырик увеличивался и двигался по главной диагонали.

Использование оператора Random в анимации

Для задания положения, размера или цвета объекта можно использовать генератор случайных чисел. Рассмотрим задачу, в которой случайным является положение точки на экране.

Задача 1. Засыпать окно (учитывать изменение размеров) точками.
uses GraphABC;
var x,y,i:integer;
begin
for i:=1 to 10000 do
begin
x:=random(WindowWidth)+1; //WindowWidth — возвращает ширину окна
y:= random(WindowHeight)+1; // WindowHeight — возвращает высоту окна
SetPixel(x,y,clblack);
end;
end.

Движение шара ( без мерцания )
uses GraphABC;
var I,X,Y,D: integer;
begin
X:=20; Y:=30; D:=100;
LockDrawing;
for i:=1 to 500 do
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+I,Y,X+I+D,Y+D);
Redraw;
Sleep(1);
end;
end.

Столкновение двух шаров ( один шар движется, другой покоится)

var I,X,Y,D,X1,X2: integer;

begin
X:=20; Y:=30; D:=70; X1:=350; X2:=500;

LockDrawing;
for I:=1 to X1-D do

// зеленый шар движется, красный стоит на месте
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(X+I,Y,X+I+D,Y+D);
SetBrushColor(clRed);
Ellipse(X+X1,Y,X+X1+D,Y+D);
Redraw;
Sleep(5);
end;
for I:=X1 to X2 do
// зеленый шар стоит на месте, красный шар движется

Код к задаче: «Написать программу, в которой окружность «пробегает» по периметру прямоугольника»

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru