Очитавање тастатуре¶
Добијање информације о притиснутим тастерима на тастатури је врло слично као за тастере миша. Функција pg.key.get_pressed()
враћа торку чији се елементи користе као логичке вредности, а показују за сваки тастер на тастатури да ли је он тренутно притиснут или не.
Пошто тастатура има много више тастера него миш, коришћење индекса 0, 1, 2 итд. за поједине тастере би било непрактично. Да не бисмо морали да знамо који индекс у торци одговара којем тастеру, ПајГејм библиотека садржи именоване константе које користимо као индексе. На пример, константе pg.K_LEFT
, pg.K_RIGHT
, pg.K_UP
, pg.K_DOWN
одговарају тастерима са стрелицама, који се често очитавају. Тастеру за размак одговара константа pg.K_SPACE
, док тастерима слова на пример a, b, c одговарају константе pg.K_a
, pg.K_b
, pg.K_c
итд. комплетан списак ових константи можете да видите овде .
Примери и задаци¶
Пример - Свемирски брод: У овом примеру имамо сличицу свемирског брода, коју померамо лево - десно у складу са притиснутим стрелицама. Осим тога, из брода може да се пуца притиском на размак.
Најпре обратите пажњу на истакнути део програма са светлијом позадином (линије 23-37). То је део који је овде нов, и он је нешто детаљније прокоментарисан и у самом коду.
Остали део програма само ради анимацију више објеката, а то је техника позната од раније.

Дакле, након што очитамо стање свих тастера и сместимо га у торку pritisnut, у if наредби једноставно проверавамо стање тастера који нас интересују.
Задатак - навигација: Допуните следећи програм, тако да се помоћу 4 стрелице управља жутим кругом, као у примеру. Круг треба да се не помера ако није притиснута ни једна стрелица, а да се креће за по један пиксел у смеру стрелица које су притиснуте (притиснуте супротне стрелице се међусобно поништавају).
Задатак - змија: Допуните следећи програм, тако да помоћу стрелица може да се управља ’змијом’ која се састоји од неколико квадратића, као у примеру.
Променљиве d_red и d_kol означавају смер кретања змије. Док ни једна стрелица није притиснута, ове променљиве не мењају вредност и змија наставља да се креће у истом смеру. Ваш задатак је да додате наредбе за очитавање стања тастатуре и израчунавање нових вреднсти за (d_red, d_kol) на основу притиснутих стрелица, тако да се кретање настави у изабраном смеру.
Помоћ: ако се глава змије налазила на пољу (red, kol), у новом фрејму ће се налазити на пољу (red + d_red, kol + d_kol). Проверите да ли разумете како треба доделити вредности променљивама d_red, d_kol за сваки од смерова:
- Горе
- Не, вредности за горе су (d_red, d_kol) = (-1, 0)
- Доле
- Не, вредности за доле су (d_red, d_kol) = (1, 0)
- Лево
- Тачно
- Десно
- Не, вредности за десно су (d_red, d_kol) = (0, 1)
Q-75: Ако се променљивама (d_red, d_kol) доделе вредности (0, -1), у ком смеру се наставља кретање?
Питања¶
Док одговарате на питања, враћајте се по потреби на програм „змија” и погледајте део који вам је потребан за одговор.
Колико редова има табла?
- x = red*a + a, y = kol*a + a
- Покушајте поново
- x = kol*a + a, y = red*a + a
- Покушајте поново
- x = red*a, y = kol*a
- Покушајте поново
- x = kol*a, y = red*a
- Тачно
Q-76: Које су координате горњег левог угла квадратића на месту (red, kol)?
- Листа zmija се у сваком фрејму продужава за нови елемент који представља нови положај главе змије.
- Не постоји таква наредба у програму
- Листа zmija током рада програма стално има исти број елемената.
- Тачно
- Из листе zmija се у сваком фрејму избацује један елемент, који представља крај репа змије.
- Не постоји таква наредба у програму.
Q-77: Које реченице су тачне?