Догађаји тастатуре

Од догађаја који настају употребом тастатуре најважнији је догађај спуштања тастера, па ћемо се њиме највише и бавити. Приликом спуштања тастера на тастатури, у објекту dogadjaj који представља догађај у нашим програмима, вредност dogadjaj.type ће бити pg.KEYDOWN.

Када констатујемо да је неки тастер на тастатури притиснут, скоро увек нас интересује који је то тастер. Ово можемо сазнати испитивањем вредности dogadjaj.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

Вредност поља dogadjaj.key говори о ком се физичком тастеру ради и та вредност је погодна за тастере попут стрелица, Ctrl, Shift, Alt, Home, End и сличних. Када се ради о тексту, може да буде згодније да користимо вредност поља dogadjaj.unicode, која садржи управо откуцани знак (као стринг од једног карактера).

Следећи пример илуструје како може да се испитује притисак на тастер, односно догађај типа pg.KEYDOWN.

Пример - укрштеница

У овом примеру корисник може помоћу стрелица на тастатури да премешта оквир и да уноси слова у квадратиће.

Обратите пажњу на функцију obradi_dogadjaj у којој се дешава провера типа догађаја, а затим, ако се ради о притиску на тастер, проверавају се додатне информације о догађају, записане у пољима dogadjaj.key и dogadjaj.unicode.

Успут можете да покушате да саставите неке занимљиве укрштене речи.

Упоредимо овај програм са програмом „Навигација” из лекције о очитавању стања тастатуре:

У програму „Навигација”

У програму „Укрштеница”

жути круг се кретао за по један пиксел - клизио је

оквир се креће за по једно поље - скаче

нисмо имали прецизну контролу где ће се круг зауставити

прецизно контролишемо где ће се оквир зауставити

није нам ни било важно где ће се тачно круг зауставити

важно нам је где ће се тачно оквир зауставити

очитавали смо стање тастера на тастатури (доле или горе)

користимо догађај (спуштање тастера)

Задатак - навигација по пољима

Напишите програм који ради као у примеру (дугме „Прикажи пример”).

Корисник помоћу стрелица на тастатури може да води лика представљеног жутим кругом. Лик се креће по пољима на којима се налазе беле тачке.

Задатак - прављење лавиринта

Напишите програм који прави лавитинт. Црвени оквир треба да се помера помоћу стрелица, а притиском на размак да се мења боја поља (из црне у белу и обрнуто).

Када решите задатак, испробајте следеће:

Бонус - програм за вежбање куцања

Програм који следи, служи за вежбање куцања. Програм јесте дугачак, али требало би да можете да разумете његов велики део.

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

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

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

  • када добро увежбате слова која прва падају, да их избаците из листе слова за вежбу

  • да знаци који падају буду само цифре и знаци операција (ако желите да вежбате куцање само на нумеричкој тастатури десно)

  • да притисак на размак брише најниже слово (уз неко смањивање поена)

или било шта друго чега се сетите.

Када будете имали времена, свакако покушајте и да направите што бољи резултат (без варања).