Očitavanje tastature¶
Dobijanje informacije o pritisnutim tasterima na tastaturi je vrlo slično kao za tastere miša. Funkcija pg.key.get_pressed()
vraća torku čiji se elementi koriste kao logičke vrednosti, a pokazuju za svaki taster na tastaturi da li je on trenutno pritisnut ili ne.
Pošto tastatura ima mnogo više tastera nego miš, korišćenje indeksa 0, 1, 2 itd. za pojedine tastere bi bilo nepraktično. Da ne bismo morali da znamo koji indeks u torci odgovara kojem tasteru, PajGejm biblioteka sadrži imenovane konstante koje koristimo kao indekse. Na primer, konstante pg.K_LEFT
, pg.K_RIGHT
, pg.K_UP
, pg.K_DOWN
odgovaraju tasterima sa strelicama, koji se često očitavaju. Tasteru za razmak odgovara konstanta pg.K_SPACE
, dok tasterima slova na primer a, b, c odgovaraju konstante pg.K_a
, pg.K_b
, pg.K_c
itd. kompletan spisak ovih konstanti možete da vidite ovde .
Primeri i zadaci¶
Primer - Svemirski brod: U ovom primeru imamo sličicu svemirskog broda, koju pomeramo levo - desno u skladu sa pritisnutim strelicama. Osim toga, iz broda može da se puca pritiskom na razmak.
Najpre obratite pažnju na istaknuti deo programa sa svetlijom pozadinom (linije 23-37). To je deo koji je ovde nov, i on je nešto detaljnije prokomentarisan i u samom kodu.
Ostali deo programa samo radi animaciju više objekata, a to je tehnika poznata od ranije.
Dakle, nakon što očitamo stanje svih tastera i smestimo ga u torku pritisnut, u if naredbi jednostavno proveravamo stanje tastera koji nas interesuju.
Zadatak - navigacija: Dopunite sledeći program, tako da se pomoću 4 strelice upravlja žutim krugom, kao u primeru. Krug treba da se ne pomera ako nije pritisnuta ni jedna strelica, a da se kreće za po jedan piksel u smeru strelica koje su pritisnute (pritisnute suprotne strelice se međusobno poništavaju).
Zadatak - zmija: Dopunite sledeći program, tako da pomoću strelica može da se upravlja ’zmijom’ koja se sastoji od nekoliko kvadratića, kao u primeru.
Promenljive d_red i d_kol označavaju smer kretanja zmije. Dok ni jedna strelica nije pritisnuta, ove promenljive ne menjaju vrednost i zmija nastavlja da se kreće u istom smeru. Vaš zadatak je da dodate naredbe za očitavanje stanja tastature i izračunavanje novih vrednsti za (d_red, d_kol) na osnovu pritisnutih strelica, tako da se kretanje nastavi u izabranom smeru.
Pomoć: ako se glava zmije nalazila na polju (red, kol), u novom frejmu će se nalaziti na polju (red + d_red, kol + d_kol). Proverite da li razumete kako treba dodeliti vrednosti promenljivama d_red, d_kol za svaki od smerova:
- Gore
- Ne, vrednosti za gore su (d_red, d_kol) = (-1, 0)
- Dole
- Ne, vrednosti za dole su (d_red, d_kol) = (1, 0)
- Levo
- Tačno
- Desno
- Ne, vrednosti za desno su (d_red, d_kol) = (0, 1)
Q-75: Ako se promenljivama (d_red, d_kol) dodele vrednosti (0, -1), u kom smeru se nastavlja kretanje?
Pitanja¶
Dok odgovarate na pitanja, vraćajte se po potrebi na program „zmija” i pogledajte deo koji vam je potreban za odgovor.
Koliko redova ima tabla?
- x = red*a + a, y = kol*a + a
- Pokušajte ponovo
- x = kol*a + a, y = red*a + a
- Pokušajte ponovo
- x = red*a, y = kol*a
- Pokušajte ponovo
- x = kol*a, y = red*a
- Tačno
Q-76: Koje su koordinate gornjeg levog ugla kvadratića na mestu (red, kol)?
- Lista zmija se u svakom frejmu produžava za novi element koji predstavlja novi položaj glave zmije.
- Ne postoji takva naredba u programu
- Lista zmija tokom rada programa stalno ima isti broj elemenata.
- Tačno
- Iz liste zmija se u svakom frejmu izbacuje jedan element, koji predstavlja kraj repa zmije.
- Ne postoji takva naredba u programu.
Q-77: Koje rečenice su tačne?