lockdrawing



Автор Александр Шматько задал вопрос в разделе Другие языки и технологии

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

Ответ от Андрей Журавлев[гуру]
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.

Ответ от - -[гуру]
Я не умею в паскаль но скажу алгоритм:
цикл (пока не будет нажата кнопка ESC)
{
Считывать нажатия клавиш:
Если нажата arrowUP, тогда координата машины Y--
Если нажата arrowRight, тогда координата машины X++
...
Отрисовать машины по этим координатам (если она отрисовывается из нескольких примитивов, то отрисовывать эти примитивы относительно лоакльной системы координат, которая связана с координатам X и Y).
Ждать например 100 мс, иначе: все будет двигаться слишком быстро (зависит от мощности компа) .
}

Ответ от Jurii[гуру]
lockdrawinglockdrawing

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Паскаль. Анимация. Как по нажатию на кнопку заставить машину ехать в обратную сторону?

Как сделать анимацию в Paskal Abc.net ?
uses
GraphABC;
var
x : integer;
begin

//for x := 0 to 500 do
подробнее...

как сделать анимацию в паскале
Использовать процедуру delay, которая делает паузу в программе.

Алгоритм такой: рисуем
подробнее...
спросили в Randomness
Помогите.. Как двигать например круги в паскале?
рисовать, например, со смещенным
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*