Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi.Начало.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.56 Mб
Скачать

Задание для самостоятельной работы.

Модифицируйте предыдущий пример, добавив еще несколько бабочек.

Движение по закону

Например, шарик двигается по окну, как по столу, отражаясь от его стенок. Для этого поместим в форму компонент img:TImage и компонент Timer:TTimer. Внешний вид формы на этапе проектирования изображен на рисунке:

На событие OnCreate формы напишем код, который задает значения смещения шарика по X и Y:

procedure Tfrm.FormCreate(Sender: TObject);

begin

dx:=9; dy:=7;

end;

На событие OnTimer компонента Timer напишем программный код, который позволяет смещать шарик:

procedure Tfrm.Timer1Timer(Sender: TObject);

begin

if (img.Left+img.Width>=frm.ClientWidth) or (img.Left<=0) then

dx:=-dx;

if (img.Top+img.Height>=frm.ClientHeight) or (img.Top<=0) then

dy:=-dy;

img.Left:=img.Left+dx;

img.Top:=img.Top+dy;

end;

Задание для самостоятельной работы

  1. Модифицируйте рассмотренный пример, добавив еще несколько шариков.

  2. Промоделируйте движение снаряда, выпущенного из пушки и летящего по параболе.

Управляемое движение

Например, требуется организовать управление движением жука в окне с помощью стрелок клавиатуры вверх, вниз, влево, вправо, так, чтобы жук не выходил за границы окна. Для отслеживания нажатия клавиш в окне можно использовать событие формы: OnKeyDown.

Событие OnKeyDown - выполняется как при нажатии одной клавиши, так и при одновременном нажатии двух клавиш, включая функциональные клавиши и управляющие клавиши, такие как Shift, Alt, Ctrl.

Заголовок процедуры обработки события имеет следующий вид:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Процедуре обработки события OnKeyDown передаются три параметра:

Sender – указатель на объект источник события.

Shift – указывает какая из клавиш Shift, Alt, или Ctrl была нажата вместе с клавишей Key.

Key – задает код нажатой клавиши. Для не алфавитно-цифровых клавиш можно использовать виртуальные коды клавиш. Коды клавиш представляют собой константы. Например, в следующей таблице приведены некоторые виртуальные коды клавиш:

Код клавиши

Описание

VK_RETURN

Enter

VK_ESCAPE

Escape

VK_LEFT

Стрелка влево

VK_UP

Стрелка вверх

VK_RIGHT

Стрелка вправо

VK_DOWN

Стрелка вниз

VK_DELETE

Delete

Поместим в область формы компонент Image1:TImage. Зададим его свойства.

На событие OnKeyDown формы напишем программный код, который позволяет управлять движением жука. При нажатии стрелок вверх и вниз жук перемещается вверх и вниз на 10 пикселей. При нажатии стрелок влево и вправо жук также перемещается на 10 влево и вправо:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

case key of

{вверх}

VK_UP: if Image1.top -10 > 0 then Image1.top:=Image1.Top - 10;

{вниз}

VK_Down: if Image1.top +10 < ClientHeight then Image1.top:=Image1.Top + 10;

{влево}

VK_Left: if Image1.Left - 10 >0 then Image1.Left :=Image1.Left -10;

{вправо}

VK_Right: if Image1.Left +10 <ClientWidth then Image1.Left :=Image1.Left +10;

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]