Događaji tastature

Od događaja koji nastaju upotrebom tastature najvažniji je događaj spuštanja tastera, pa ćemo se njime najviše i baviti. Prilikom spuštanja tastera na tastaturi, u objektu dogadjaj koji predstavlja događaj u našim programima, vrednost dogadjaj.type će biti pg.KEYDOWN.

Kada konstatujemo da je neki taster na tastaturi pritisnut, skoro uvek nas interesuje koji je to taster. Ovo možemo saznati ispitivanjem vrednosti dogadjaj.key. U lekciji o očitavanju stanja tastature već smo pomenuli da za svaki taster postoji imenovana konstanta koja odgovara tom tasteru. Podsetimo se imena ovih konstanti za neke često proveravane tastere (kompletan spisak ovih konstanti možete da vidite ovde ):

konstanta

taster

pg.K_LEFT

strelica levo

pg.K_RIGHT

strelica desno

pg.K_UP

strelica gore

pg.K_DOWN

strelica dole

pg.K_SPACE

razmak

pg.K_a

taster a

pg.K_b

taster b

pg.K_c

taster c

Vrednost polja dogadjaj.key govori o kom se fizičkom tasteru radi i ta vrednost je pogodna za tastere poput strelica, Ctrl, Shift, Alt, Home, End i sličnih. Kada se radi o tekstu, može da bude zgodnije da koristimo vrednost polja dogadjaj.unicode, koja sadrži upravo otkucani znak (kao string od jednog karaktera).

Sledeći primer ilustruje kako može da se ispituje pritisak na taster, odnosno događaj tipa pg.KEYDOWN.

Primer - ukrštenica

U ovom primeru korisnik može pomoću strelica na tastaturi da premešta okvir i da unosi slova u kvadratiće.

Obratite pažnju na funkciju obradi_dogadjaj u kojoj se dešava provera tipa događaja, a zatim, ako se radi o pritisku na taster, proveravaju se dodatne informacije o događaju, zapisane u poljima dogadjaj.key i dogadjaj.unicode.

Usput možete da pokušate da sastavite neke zanimljive ukrštene reči.

Uporedimo ovaj program sa programom „Navigacija” iz lekcije o očitavanju stanja tastature:

U programu „Navigacija”

U programu „Ukrštenica”

žuti krug se kretao za po jedan piksel - klizio je

okvir se kreće za po jedno polje - skače

nismo imali preciznu kontrolu gde će se krug zaustaviti

precizno kontrolišemo gde će se okvir zaustaviti

nije nam ni bilo važno gde će se tačno krug zaustaviti

važno nam je gde će se tačno okvir zaustaviti

očitavali smo stanje tastera na tastaturi (dole ili gore)

koristimo događaj (spuštanje tastera)

Zadatak - navigacija po poljima

Napišite program koji radi kao u primeru (dugme „Prikaži primer”).

Korisnik pomoću strelica na tastaturi može da vodi lika predstavljenog žutim krugom. Lik se kreće po poljima na kojima se nalaze bele tačke.

Zadatak - pravljenje lavirinta

Napišite program koji pravi lavitint. Crveni okvir treba da se pomera pomoću strelica, a pritiskom na razmak da se menja boja polja (iz crne u belu i obrnuto).

Kada rešite zadatak, isprobajte sledeće:

Bonus - program za vežbanje kucanja

Program koji sledi, služi za vežbanje kucanja. Program jeste dugačak, ali trebalo bi da možete da razumete njegov veliki deo.

Možda ćete želeti (bez obaveze) da prilagodite program svojim potrebama, naročito u početku korišćenja. Na primer:

  • da usporite (ili kasnije da ubrzate) padanje slova

  • da ne gubite poene kad pogrešite

  • kada dobro uvežbate slova koja prva padaju, da ih izbacite iz liste slova za vežbu

  • da znaci koji padaju budu samo cifre i znaci operacija (ako želite da vežbate kucanje samo na numeričkoj tastaturi desno)

  • da pritisak na razmak briše najniže slovo (uz neko smanjivanje poena)

ili bilo šta drugo čega se setite.

Kada budete imali vremena, svakako pokušajte i da napravite što bolji rezultat (bez varanja).