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.

../_images/spaceship.png

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:

    Q-75: Ako se promenljivama (d_red, d_kol) dodele vrednosti (0, -1), u kom smeru se nastavlja kretanje?

  • 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)

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?

    Q-76: Koje su koordinate gornjeg levog ugla kvadratića na mestu (red, kol)?

  • 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-77: Koje rečenice su tačne?

  • 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.