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

Задания

  1. Создать проект, в котором по форме случайным образом перемещается мячик. При щелчке на шарике мышью, должно отобразиться сообщение: «Попадание».

  2. Изменить предыдущий проект таким образом, чтобы в нем подсчитывалось количество попаданий.

  3. Создать проект «Воздушные шары». В этом проекте должны двигаться снизу вверх несколько воздушных шаров. При щелчке мышью по шарику, он должен взорваться. В проекте следует предусмотреть подсчет количества попаданий. Если шарик улетел за верхнюю границу, то необходимо уменьшить количество жизней.

3.3 Управление объектом с помощью клавиатуры

Для управления клавиатурой в Delphi используются следующие события:

  1. OnKeyDown – событие, которое возникает при нажатии любой клавиши на клавиатуре, включая функциональные и специальные.

  2. OnKeyUp – событие, которое происходит при отпускании клавиши на клавиатуре.

Коду нажатой или отпущенной клавиши соответствует параметр Key. При управлении клавиатурой с помощью этих событий параметр Key имеет целочисленный тип. Key представляет собой код виртуальной клавиши Windows.

Пример. Создать программу, в которой заголовок формы меняется в соответствии с кодом нажатой клавиши. Форма должна закрываться при нажатии на клавишу Alt.

Текст программного кода будет следующим:

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

Shift: TShiftState);

Begin

Form1.Caption: = IntToStr(Key);

if ssAlt in Shift then Close;

end;

В этой программе параметр Shift указывает состояние клавиши Alt (нажата или нет). Этот параметр также определяет состояние клавиш Ctrl и Shift.

  1. OnKeyPress – событие, которое возникает, когда нажата и отпущена клавиша на клавиатуре. Оно отличается от событий OnKeyDown и OnKeyUp тем, что параметр Key, передаваемый в метод обработки, имеет не целочисленный, а символьный тип Char.

Событие OnKeyPress возникает при вводе с клавиатуры символа ASC II, т.е. оно не ге­нерируется, например, при нажатии функциональных клавиш. Обработчик события вызывается только при нажатии буквенных, цифровых клавиш, а также некоторых комбинаций клавиш.

Каждому символу, как видимому, так и невидимому, а значит и каждой клавише клавиатуры соответствует определенный код ASCII. Для получения символа по его коду в языке Delphi используется либо функция Chr, либо запись вида # код.

В таблице 1 приведены расширенные коды клавиш.

Таблица 1 ASC II кода

код

Клавиша или комбинация клавиш

код

Клавиша или комбинация клавиш

8

BackSpace

48

0,)

9

Tab

49

1 !

13

Enter

50

2 @

16

Shift

51

3 #

32

Пробел

52

4 $

17

Ctrl

53

5 %

18

Alt

54

6 ^

20

CapsLock

55

7 &

27

Esc

56

8 *

45

Insert

57

9 (

33

PageUp

192

` ~

34

PageDown

189

- _

35

End

187

= +

36

Home

219

[ {

37

курсор ←

221

] }

38

курсор ↑

186

; :

39

курсор →

222

' "

40

курсор ↓

220

|

46

Delete

188

, <

44

PrintScreen

190

. >

145

ScrollLock

191

/ ?

65-90

a A - z Z

Рассмотрим пример проекта с использованием события OnKeyPress.

Пример. Составить проект, в котором следует клавишами управления курсором двигать прицел и выстрелить в него при нажатии на клавишу Enter.

Создадим графический интерфейс по образцу рис. 25. Для этого на форме разместим два компонента TImage. В объект Image1 загрузим изображение прицела, в объект Image2 – изображение пульки. У объекта Image2 установим свойство Visible равным false.

Рис. 25 Графический интерфейс окна

Создадим обработчик события OnKeyPress. В нем сначала опишем движение прицела вместе с пулькой вправо при нажатии на клавишу Frame7 . Для этого проверим, чему равен код key. Когда код равен #39, перемещаем прицел вместе с пулькой вправо на 5 позиций. Аналогично задаем движение прицела влево. Далее описываем движение пульки при выстреле. Если нажата клавиша Enter (код #13), тогда пулька должна выстрелить из прицела.

Обработчик события OnKeyPress будет следующим:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char

Begin

If key=#39 then

begin

Image1.Left:=Image1.Left+5;

Image2.Left:=Image2.Left+5;

end;

If key=#37 then

begin

Image1.Left:=Image1.Left-5;

Image2.Left:=Image2.Left-5;

end;

If key=#13 then

begin

Image2.Visible:=true;

Image2.Top:=Image2.Top-60;

end;

End;

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