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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Для управления клавиатурой в 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);
ifssAltinShift thenClose;
end;

 

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

 

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

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

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

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

 

 

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

код Клавиша или комбинация клавиш код Клавиша или комбинация клавиш
  BackSpace   0,)
  Tab   1!
  Enter   2 @
  Shift   3 #
  Пробел   4 $
  Ctrl   5 %
  Alt   6 ^
  CapsLock   7 &
  Esc   8 *
  Insert   9 (
  PageUp   ` ~
  PageDown   - _
  End   = +
  Home   [ {
  курсор ←   ] }
  курсор ↑   ;:
  курсор →   ' "
  курсор ↓   |
  Delete   , <
  PrintScreen   . >
  ScrollLock   /?
65-90 a A - z Z    

 

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

 

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

 

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

 

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

 

Создадим обработчик события OnKeyPress. В нем сначала опишем движение прицела вместе с пулькой вправо при нажатии на клавишу . Для этого проверим, чему равен код 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;

 

Задания

1. Создать проект «Морской бой», в котором клавишами управления курсором следует навести прицел на движущийся корабль. При нажатии на клавишу Enter прицел должен выстрелить в корабль пулькой. Если пуля попадет в корабль, то образуется взрыв.

2. Изменить проект «Морской бой» таким образом, чтобы после поражения корабля, он появлялся вновь у левой границы. В проекте должно отображаться количество попаданий в корабль.

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

4. Создать программу, имитирующую движение по форме белого кубика нажатием клавиш управления указателем. Кубик должен увеличивать свои размеры при нажатии клавиши Insert и уменьшать при нажатии клавиши Delete.

5. Составить проект рисования дома и обеспечить возможность зажигать и гасить свет в доме. Включение и выключение света в окне должно выполняться: с клавиатуры; с помощью мыши.

6. Написать игровую программу, в которой необходимо попасть мячиком по кирпичикам. Мяч находится на движущейся подставке и управляется с помощью мыши. При попадании кирпич исчезает. После окончания времени выводится итоговое сообщение о количестве попаданий.

 

Работа со строками

 

Объекты строкового типа string довольно часто встречаются в программах, написанных на языке Delphi, поэтому рассмотрим подробней свойства и методы этих объектов.

Строковый тип данных

Строковый тип данных служит для хранения строк или цепочки символов. Переменная строкового типа объявляется следующим образом:

Var str1: String; или Var str1: String [длина]

где: Str1 – имя переменной;

string – ключевое слово обозначения строкового типа;

длина – константа целого типа, которая задает максимально допустимую длину строки. Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам.

Используя операции =, <, >, <=, >=, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом.

Кроме операции сравнения, к строковым переменным и константам можно применить операцию сложения. В результате выполнения этой операции получается новая строка.

Например, в результате выполнения команд:

first__name: ='Иван';

last_name:='Иванов';

ful_name:=first_name+last_name;

переменная ful_name получит значение ‘Иван Иванов’.

 

Основные свойства и методы объектов строкового типа (объектов TString) рассмотрим в следующем пункте на примере работы с текстовой областью.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 810; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.238.20 (0.01 с.)