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

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

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

Как совместить разные виды движения

Попробуем совместить случайное движение и управляемое движение. Для этого рассмотрим такую несложную игру. По экрану в горизонтальном направлении слева направо движутся летающие тарелки. Они появляются в случайных местах и движутся со случайными скоростями. Как только очередная летающая тарелка, двигаясь слева направо, выходит за пределы экрана, она снова появляется в начале экрана слева в случайной позиции и начинает двигаться со случайной скоростью. Таким образом, создается иллюзия непрерывного движения разных объектов. В нижней части экрана находится пушка, которая может перемещаться во всех направлениях: влево, вправо, вверх и вниз с помощью стрелок. Пушка может расстреливать летающие тарелки снарядами нажатием клавиши Enter.

Для создания этой игры нужно нарисовать персонажей: пушку, летающую тарелку и снаряд в редакторе Image Editor.

В форме для отображения персонажей игра будем использовать компоненты:

Pushka:TImage – пушка;

FLY1, FLY2 : TImage – летающие тарелки;

Snar:TImage – снаряд.

Для организации движения летающих тарелок будем использовать таймер Timer1:Ttimer со значением свойства Interval, равным примерно 60. Для организации движения снаряда будем использовать таймер Timer2:TTimer со значением свойства Interval, равным примерно 1. В начале игры Timer2 выключен, т.е. свойство Enabled равно false, все тарелки и снаряд не видимы, т.е. их свойство Visible равно false.

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

case key of

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

VK_Down: if Pushka.top +10 +Pushka.Height < ClientHeight then

Pushka.top:=Pushka.Top + 10;

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

VK_Right: if Pushka.Left +10 +Pushka.Width <ClientWidth then

Pushka.Left :=Pushka.Left +10;

VK_Return: begin

Snar.Top:= Pushka.Top - Snar.Height;

Snar.Left:=Pushka.Left+20;

Snar.Visible:=true;

Timer2.Enabled:=true;

end;

end;

При нажатии на клавишу Enter задаются координаты снаряда, он становится видимым и включается Timer2, который управляет движением снаряда.

Программный код, реализующий движение летающих тарелок пишется на событие таймера Timer1. Если летающая тарелка еще не на экране (свойство visible равно false), ее следует запустить на экран, как бы в полет. Тарелка помещается в случайную позицию экрана, ее свойству visible присваивается значение true. Для задания скорости движения летающей тарелки используется свойство объекта tag. Это свойство есть почти у всех объектов, оно может использоваться для нужд программиста. Будем его использовать для хранения информации о скорости полета тарелки, которой то же присваивается случайное значение в пределах от 1 до 5.

Если тарелка уже на экране нужно сместить ее на значение скорости.

Программный код приведен ниже:

if not fly1.Visible then

with fly1 do

begin

{координаты тарелки}

top:=random(200)+1;

left:=0;

visible:=true;

{скорость тарелки }

tag:=random(10)+5;

end

else

{ полет }

if fly1.left+fly1.Width<Form1.Width then

fly1.left:= fly1.left+fly1.tag

else

fly1.visible:=false;

За движение снаряда отвечает обработчик события OnTimer второго таймера Timer2. Пока снаряд не выйдет за границу экрана или не столкнется с летающей тарелкой, смещать его на 10 пикселей. В противном случае сделать его невидимым и выключить таймер Timer2.

If Snar.top>0 then

Snar.Top:=Snar.top - 10

else

begin

Snar.Visible:=false;

Timer2.Enabled:=false;

end;

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

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