Очитавање тастатуре

Добијање информације о притиснутим тастерима на тастатури је врло слично као за тастере миша. Функција 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). То је део који је овде нов, и он је нешто детаљније прокоментарисан и у самом коду.

Остали део програма само ради анимацију више објеката, а то је техника позната од раније.

../_images/spaceship.png

Дакле, након што очитамо стање свих тастера и сместимо га у торку pritisnut, у if наредби једноставно проверавамо стање тастера који нас интересују.

Задатак - навигација: Допуните следећи програм, тако да се помоћу 4 стрелице управља жутим кругом, као у примеру. Круг треба да се не помера ако није притиснута ни једна стрелица, а да се креће за по један пиксел у смеру стрелица које су притиснуте (притиснуте супротне стрелице се међусобно поништавају).

Задатак - змија: Допуните следећи програм, тако да помоћу стрелица може да се управља ’змијом’ која се састоји од неколико квадратића, као у примеру.

Променљиве d_red и d_kol означавају смер кретања змије. Док ни једна стрелица није притиснута, ове променљиве не мењају вредност и змија наставља да се креће у истом смеру. Ваш задатак је да додате наредбе за очитавање стања тастатуре и израчунавање нових вреднсти за (d_red, d_kol) на основу притиснутих стрелица, тако да се кретање настави у изабраном смеру.

Помоћ: ако се глава змије налазила на пољу (red, kol), у новом фрејму ће се налазити на пољу (red + d_red, kol + d_kol). Проверите да ли разумете како треба доделити вредности променљивама d_red, d_kol за сваки од смерова:

    Q-75: Ако се променљивама (d_red, d_kol) доделе вредности (0, -1), у ком смеру се наставља кретање?

  • Горе
  • Не, вредности за горе су (d_red, d_kol) = (-1, 0)
  • Доле
  • Не, вредности за доле су (d_red, d_kol) = (1, 0)
  • Лево
  • Тачно
  • Десно
  • Не, вредности за десно су (d_red, d_kol) = (0, 1)

Питања

Док одговарате на питања, враћајте се по потреби на програм „змија” и погледајте део који вам је потребан за одговор.

Колико редова има табла?

    Q-76: Које су координате горњег левог угла квадратића на месту (red, kol)?

  • 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-77: Које реченице су тачне?

  • Листа zmija се у сваком фрејму продужава за нови елемент који представља нови положај главе змије.
  • Не постоји таква наредба у програму
  • Листа zmija током рада програма стално има исти број елемената.
  • Тачно
  • Из листе zmija се у сваком фрејму избацује један елемент, који представља крај репа змије.
  • Не постоји таква наредба у програму.