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

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

  1. В игре, описанной выше, написать программный код, который будет определять, достиг ли выстрел цели и если достиг увеличивать счет игры, который необходимо выводить на экран.

  2. Используя элементы предыдущей игры создать игру «Ралли». По дороге навстречу машине игрока движутся другие машины. Машины появляются в случайных местах и движутся со случайными скоростями. Машина игрока может двигаться в двух направлениях влево и вправо. С помощью стрелок вверх и вниз можно соответственно увеличивать или уменьшать скорость машины. Цель игры: пробежать как можно больше километров, избегая столкновений со встречными машинами. Примерный вид экрана изображен на рисунке:

Машина игрока

  1. Используя элементы предыдущей игры придумать сюжет игры самостоятельно.

Использование мыши

Для управления мышью можно использовать следующие события формы или элемента управления:

  1. OnMouseDown – выполняется при нажатии на кнопку мыши, возможно в комбинации с управляющей клавишей Shift, Ctrl, и Alt.

  2. OnMouseMove – выполняется при перемещении мыши;

  3. OnMouseUp – выполняется при отпускании кнопки мыши.

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

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Процедуре передается на вход 5 параметров:

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

Button – позволяет определить какая кнопка мыши была нажата: левая, правая или средняя.

Shift – позволяет определить какая управляющая клавиша была нажата

X,Y – координаты, относительно клиентской части объекта Sender. Например, если это форма, то координаты точки, относительно окна, где нажали мышкой.

Процедуре обработки события OnMouseMove, как видно из заголовка

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

передается 4 параметра, значения которых аналогичны.

Процедуре обработки события OnMouseUp, как видно из заголовка

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

передается 5 параметров, где X,Y это координаты, куда переместилась мышь.

Можно продемонстрировать использование управления мышкой на следующих примерах.

Пример 1. Например, при нажатии на мышку начинаем рисовать линию, при отпускании – завершаем рисование.

Для реализации этого упражнения будем использовать события мыши самой формы. Создадим либо в секции Interface или на верхнем уровне секции реализации переменную pr:

Var pr:Boolean;

Переменная pr – это признак того, что было нажатие мыши. Эта переменная необходима нам, чтобы код на событие OnMouseMove выполнялся только в случае, если было нажатие мыши. Начальное значение переменной pr, равное false, задается на событие формы OnCreate.

procedure TForm1.FormCreate(Sender: TObject);

begin

pr:=false;

end;

При нажатии мыши (событие OnMouseDown) необходимо включить флажок pr и перевести курсор в позицию, где была нажата мышь:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

pr:=true;

Canvas.Moveto(x,y);

end;

При движении мыши (событие OnMouseMove) необходимо проверить было ли нажатие мыши, и если было, то провести линию в точку, куда переместилась мышь:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

if pr then Canvas.Lineto(x,y);

end;

На событие OnMouseUp необходимо сбросить флажок pr в false:

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

pr:=false;

end;

Пример 2. Пусть в окне есть некоторый элемент, например картинка Image1: TImage, который необходимо переместить мышкой в другое место. Для того, чтобы перетащить объект, необходимо щелкать на самом объекте. Поэтому будем использовать все события мыши, связанные с самим объектом Image1.

В этом случае также необходимо завести переменную флажок, которая будет сигнализировать о том, что было нажатие мыши. При нажатии мыши на объекте будет выполняться его событие: Image1MouseDown, код которого приведен ниже:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

pr:=true;

end;

При отпускании мыши флажок сбрасывается:

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

pr:=false;

end;

При перемещении мыши проверяется, было ли нажатие, если было, то необходимо сместить картинку:

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;

X,Y: Integer);

begin

if pr then

begin

Image1.Top:=Image1.Top+y;

Image1.Left:=Image1.Left+x;

end;

end;

При этом X и Y это координаты смещения мышки относительно объекта.

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