Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Анимация в PaskalABC HELP!!!

Anna Shakhray Знаток (379), закрыт 11 лет назад
Перерыла весь инет, ничего не нашла. Как нужно прописать программу, чтобы любая, пусть даже обычный квадрат, шел вверх? И еще вопрос, что нужно, чтобы некоторые фигуры двигались, а другие тем временем нет? Как к примеру нарисовал человека и хочешь, чтобы только рука двигалась.
Дополнен 11 лет назад
Никому платить не буду ясно? Дай мне код в конце концов!
Дополнен 11 лет назад
Код прописать сложно?
Дополнен 11 лет назад
Из всех кодов, что были присланы, ни один мне не подошел. Я спросила, какой код нужен, чтобы поднять фигуру вверх. Заставить двигаться вверх. А вы мне что-то скинули, которое даже не хочет работать на программе.
Лучший ответ
Roman Sikorsky Мастер (1638) 11 лет назад
Вот программа, которая что-то перемещает, по-моему, это то, что нужно.
http://progshkola.ru/zanyatiya/zanyatie-019-animaciya.html

Там есть переменные dx и dy
их значения нужно задавать в зависимости от направления движения
вверх 0 -1
вниз 0 1
вправо 1 0
влево 0 1
Остальные ответы
Сергиус Мудрец (17648) 11 лет назад
пфф.. . включим логику.. . во-первых, надо юзать ООП, во-вторых, за благотворительный вклад мне на вебмани могу хорошо помочь )

слишком много кода хочешь нахаляву )
Зло Просветленный (38821) 11 лет назад
а в чем проблема?
рисуем квадрат.
ждем немного.
рисуем его же цветом фона (типа стираем)
рисуем квадрат чуть выше
и т. д.
Александр Курочкин Профи (565) 11 лет назад
Вот тут есть готовые примеры, двигаются треугольники!
[ссылка заблокирована по решению администрации проекта]. cyberforum. ru/turbo-pascal/thread56317.html
Вот типа такого:
uses crt,graph;
const n=4;
type
Point=record
x,y:integer;
end;
mas=array[1..n] of Point;
procedure Z(x,y:integer;var m:mas;c:byte);

var i:byte;
begin
Setcolor(c);
m[1].x:=x;m[1].y:=y;
m[2].x:=x;m[2].y:=y+90;
m[3].x:=x+90;m[3].y:=y+90;
m[4].x:=x;m[4].y:=y;
moveto(m[1].x,m[1].y);
for i:=1 to n do
lineto(m.x,m.y);
Setfillstyle(1,c);
end;
var gd,gm:integer;
x,y,x1,y1,i:integer;
p:mas;
c1,c2:byte;
k:char;
move:boolean;
begin
gd:=VGA;
gm:=VGAHi;
Initgraph(gd,gm,'..\bgi');
Setbkcolor(8);
x:=10;y:=10;
c1:=7;c2:=8;
move:=true;
repeat
if keypressed then
begin
k:=readkey;
if k=#13 then {if enter}
for i:=1 to 10 do
begin
y1:=y;
x1:=x;
y:=y+1;
x:=x+1;
delay(6000);
Z(x1,y1,p,c2);
Z(x,y,p,c1);
move:=true;
end;
end;
if move then
begin
Z(x1,y1,p,c2);
Z(x,y,p,c1);
move:=false;
end;
OutTextXY(320,240,'Press Enter to continue');
until k=#27; {until escape}
closegraph;
end.
Кублен Оракул (97011) 11 лет назад
program poezd;
uses graphABC,crt;
var
x1,x2,x3,y1,y2,y3:integer;
n,i,r,k:integer;
m:array [1..6] of integer;
begin
randomize;
m[1]:=clred;
m[2]:=clyellow;
m[3]:=clgreen;
m[4]:=clblue;
m[5]:=clolive;
m[6]:=clsilver;
x2:=80; x3:=80; x1:=80; i:=1;
//for i:=1 to 40 do begin
while x1 < 500 do begin inc(i);
x1:=x1 + 10;
y1:=200 ;
x2:=x2 + 5*i;
y2:=300 ;
x3:=x3 - trunc(5*i*i/2) + 10*i;
y3:=350 ;
r:=10;
delay(80);
k:= 1;
SetBrushColor(m[1]);
circle(x1,y1,r);
SetBrushColor(m[2]);
circle(x2,y2,r);
SetBrushColor(m[3]);
circle(x3,y3,r);
end;
end.
Дюхич Мудрец (15457) 11 лет назад
в таких случаях обычно используют переключение между банками видеопамяти - метод теневых страниц
Ахметшин Марат Мыслитель (6020) 11 лет назад
uses GraphABC, Events;

const n=3;

var
m: array [0..n] of integer;
x,y,h,w,i: integer;

procedure DrawAll;
var i,j,x0,y0: integer;
begin
x0 := x;
y0 := y;
for i := 0 to 5 do
for j := 0 to 5 do
DrawPicture(m[Random(4)],x0 + i*w, y0 + j*h);
end;

procedure KeyDown(key: integer);
begin
case key of
VK_Up: y := y - 1;
VK_Down: y := y + 1;
VK_Right: x := x + 1;
VK_Left: x := x - 1;
end;
DrawAll;
end;

begin
for i := 0 to n do
m[j]> := LoadPicture('a'+intToStr(i+1)+'.bmp'); // индекс j на i
x := 10;
y := 10;
h := PictureHeight(m[0]);
w := PictureWidth(m[0]);
OnKeyDown := KeyDown;
while true do
begin
DrawAll;
Sleep(100);
end;
end.
Похожие вопросы