Другие языки программирования и технологии

Паскаль. Анимация. Как по нажатию на кнопку заставить машину ехать в обратную сторону?

Program Mashina;

uses GraphABC;

var x :integer;

begin

for x:=0 to 1000 do

begin

LockDrawing;

ClearWindow;

SetWindowSize(1000,200);

SetBrushColor(clRed);

RoundRect(x+100,100,x+380,150,10,10);

SetBrushColor(clBlack);

Circle(x+300,160,30);

Circle(x+150,160,30);

SetBrushColor(clWhite);

Circle(x+150,160,15);

Circle(x+300,160,15);

SetBrushColor(clYellow);

Ellipse(x+360,125,x+375,105);

SetBrushColor(clBlack);

Rectangle(x+150,50,x+250,61);

Line(x+125,100,x+150,50);

Line(x+135,100,x+155,60);

FloodFill(x+127,98,clBlack);

Line(x+250,50,x+280,100);

Line(x+245,60,x+270,100);

Floodfill(x+275,98,clBlack);

Rectangle(x+125,100,x+135,150);

Rectangle(x+280,100,x+270,150);

Rectangle(x+195,60,x+205,150);

Rectangle(x+135,100,x+270,90);

Redraw;

end;

end.
А&
Артур >>>
1 182
program Mashina;

uses
GraphABC;

procedure CreateCarPic(var p: picture);
begin
p := picture.Create(400, 300);
with p do
begin
SetBrushColor(clRed);
RoundRect(100, 100, 380, 150, 10, 10);
SetBrushColor(clBlack);
Circle(300, 160, 30);
Circle(150, 160, 30);
SetBrushColor(clWhite);
Circle(150, 160, 15);
Circle(300, 160, 15);
SetBrushColor(clYellow);
Ellipse(360, 125, 375, 105);
SetBrushColor(clBlack);
Rectangle(150, 50, 250, 61);
Line(125, 100, 150, 50);
Line(135, 100, 155, 60);
FloodFill(127, 98, clBlack);
Line(250, 50, 280, 100);
Line(245, 60, 270, 100);
Floodfill(275, 98, clBlack);
Rectangle(125, 100, 135, 150);
Rectangle(280, 100, 270, 150);
Rectangle(195, 60, 205, 150);
Rectangle(135, 100, 270, 90);
end;
end;

var
x: integer;
p: picture;

procedure DwarPic();
begin
LockDrawing;
ClearWindow;
p.draw(x, 0);
Redraw;
end;

procedure KeyDown(Key: integer);
begin
case Key of
VK_Left: dec(x, 5);
VK_Right: inc(x, 5);
end;
DwarPic();
end;

begin
SetWindowSize(1000, 200);
CreateCarPic(p);
x := 300;
KeyDown(0);
OnKeyDown := KeyDown;
end.
VM
Vlad Mastyulev
3 147
Лучший ответ
Musalini Musa
Musalini Musa
77 535
Я не умею в паскаль но скажу алгоритм:
цикл (пока не будет нажата кнопка ESC)
{
Считывать нажатия клавиш:
Если нажата arrowUP, тогда координата машины Y--
Если нажата arrowRight, тогда координата машины X++
...
Отрисовать машины по этим координатам (если она отрисовывается из нескольких примитивов, то отрисовывать эти примитивы относительно лоакльной системы координат, которая связана с координатам X и Y).
Ждать например 100 мс, иначе: все будет двигаться слишком быстро (зависит от мощности компа) .
}
Vladimir. Tupal
Vladimir. Tupal
3 467