Събития на клавиатурата

От генерираните от клавиатурата събития най-важно е събитието за натискане на клавиши, така че ние ще се съсредоточим върху това най-много. При натискане на клавиши на клавиатурата, в обекта събитие, който представлява събитие в нашите програми, стойността на event.type ще бъде pg.KEYDOWN.

Когато натискането на клавишен клавиш е регистрирано, почти винаги искаме да знаем кой клавиш е. Това можем да разберем, като тестваме стойността на event.key. Както вече споменахме в урока за четене на състоянието на клавиатурата, че за всеки клавиш има константа, съответстваща на този клавиш. Нека си припомним имената на тези константи за някои често тествани ключове (можете да видите пълен списък на тези константи тук ):

constant

key

pg.K_LEFT

лява стрелка

pg.K_RIGHT

дясна стрелка

pg.K_UP

стрелка нагоре

pg.K_DOWN

стрелка надолу

pg.K_SPACE

разстояние

pg.K_a

клавиш a

pg.K_b

клавиш b

pg.K_c

клавиш c

Стойността на полето event.key ни казва кой физически клавиш е натиснат и тази стойност е подходяща за клавиши като клавиши със стрелки, Ctrl, Shift, Alt, Home, End и т.н. Що се отнася до текст, може да е по-удобно да се използва стойността на полето “event.unicode”, което съдържа символа, който току-що беше въведен (като един символен низ).

Следващият пример илюстрира тестване на натискане на клавиш или събитие pg.KEYDOWN.

Пример - кръстословица

В този пример потребителят може да използва клавишите със стрелки на клавиатурата, за да премества рамката и да въвежда букви в полета.

Обърнете внимание на функцията handle_event, в която се извършва проверка на типа събитие, и след това, ако е натискане на клавиш, се проверява допълнителна информация за събитието, съхранявана в полетата event.key и event.unicode.

Освен това можете да опитате да съберете няколко интересни кръстословици.

Нека сравним тази програма с програмата „Навигация“ от урока за четене на състоянието на клавиатурата:

В програмата „Навигация“

В програмата „кръстословица“

жълтият кръг се движеше с един пиксел - плъзгайки се

рамката се движи с едно поле - скача

нямахме точен контрол на това къде ще спре кръга

можем точно да контролираме къде ще спре рамката

няма значение къде точно ще спре кръга

има значение къде точно ще спре рамката

четем състоянието на клавишите(надолу или нагоре)

използваме събитие (натискане на клавиш)

Задача - навигация през полета

Напишете програма, която работи както е показано в примера (бутон „Play Task“).

Потребителят може да използва клавишите със стрелки на клавиатурата, за да ръководи символа, представен с жълт кръг. Героят се движи из полетата с бели точки.

Задача - създаване на лабиринт

Напишете програма, която прави лабиринт. Червената рамка трябва да се контролира с помощта на стрелките, а натискането на интервала трябва да промени цвета на квадрат (от черно до бяло и обратно).

Когато приключите със задачата, опитайте следното:

Бонус - програма за практика на машинопис

Програмата по-долу е предназначена за въвеждане на практика. Програмата е дълга, но трябва да можете да разберете голяма част от нея.

Може да искате (не е задължително) да приспособите програмата към вашите нужди, особено в началото. Например:

  • да забави (или по-късно да ускори) падането на буквите

  • да не губите точки, когато направите грешка

  • когато овладеете буквите, които попадат първи, да ги премахнете от списъка с букви, които да практикувате

  • да промените набора от падащи символи само на числа и знаци за работа (ако искате да практикувате да пишете само на цифровата клавиатура от дясната страна)

  • за натискане на интервала изтрийте най-малката буква (с малко намаляване на резултата)

или нещо друго, за което се сещате.

Когато имате време, вие се насърчавате да се опитате да получите максимално висока оценка (без мамене).