Leximi i tastierës

Përvetësimi i informacionit rreth tasteve në tastierë është shumë i ngjashëm me leximin e butonave të mouse. Funksioni pg.key.get_pressed() kthen një tuple, elementët e të cilit përdoren si vlera logjike, duke treguar për secilin tast në tastierë nëse aktualisht është duke u shtypur apo jo.

Për shkak se tastiera ka shumë më shumë çelësa se mouse, përdorimi i indekseve 0, 1, 2, etj për disa çelësa do të ishte jopraktik. Për të mos ditur se cili indeks në tuple korrespondon me cilin çelës, libraria e PyGame përmban konstanta të emërtuara që ne përdorim si indeks. Për shembull, konstantet pg.K_LEFT, pg.K_RIGHT, pg.K_UP, pg.K_DOWN lidhen me shigjetat e përdorura shpesh. Për butonin e hapësirës është pg.K_SPACE, ndërsa shkronjat, për shembull a, b, c kanë konstantet korrespondente pg.K_a, pg.K_b, pg .K_c etj. Listën e plotë e gjeni këtu here .

Examples and tasks

Shembull - Anije kozmike Në këtë shembull, ne kemi një imazh të një anije kozmike, të cilën e lëvizim majtas dhe djathtas në përputhje me tastet e shigjetës së shtypur. Përveç kësaj, ne mund të zjarrmë nga anija duke shtypur tastin e shiritit hapësinor.

Së pari, kushtojini vëmendje pjesës së theksuar të kodit me një sfond më të lehtë (linjat 23-37). Kjo pjesë është e re këtu, dhe gjithashtu është komentuar më hollësisht në vetë kodin.

Pjesa tjetër e programit është thjesht gjallërim i objekteve të shumta, një teknikë e njohur që nga më parë.

../_images/spaceship.png

Pra, pasi të lexojmë statusin e të gjithë çelësave dhe ta vendosim në tuple të shtypur, ne thjesht mund të kontrollojmë statusin e çelësave që ne jemi të interesuar të përdorim deklaratën if.

Detyra - lundrimi:

Plotësoni programin e mëposhtëm në mënyrë që 4 çelësat e shigjetave të kontrollojnë rrethin e verdhë, si në shembull. Rrethi nuk duhet të lëvizë nëse nuk shtypen shigjeta dhe lëvizin një piksel në drejtim të shigjetave që shtypen (shigjetat e kundërta anulojnë njëra-tjetrën jashtë).

Detyrë - gjarpri:

Plotësoni programin e mëposhtëm në mënyrë që shigjetat të mund të kontrollojnë një ‘gjarpër’ të përbërë nga disa sheshe, si në shembull.

     Variablat d_row dhe d_col tregojnë drejtimin e lëvizjes së gjarprit. Ndërsa nuk shtypen shigjeta, vlera e këtyre ndryshoreve nuk ndryshon dhe gjarpri vazhdon të lëvizë në të njëjtin drejtim. Detyra juaj është të shtoni komanda për leximin e statusit të tastierës dhe llogaritjen e vlerave të reja për (d_row, d_col) bazuar në shigjetat e shtypura, në mënyrë që lëvizja të vazhdojë në drejtimin e zgjedhur.

Ndihme: nëse koka e gjarprit ishte në katror (row, col), në kornizën e re do të jetë në katror (rresht + d_row, col + d_col). Kontrolloni nëse keni kuptuar se si duhet të caktoni vlera ndaj variablave d_row, d_col për secilin drejtim:

    Q-74: Nëse variablat (d_row, d_col) janë lidhur me clerat (0, -1), në cilin drejtim vazhdon lëvizja?

  • Up
  • No, values for up are (d_row, d_col) = (-1, 0)
  • Down
  • No, values for down are (d_row, d_col) = (1, 0)
  • Left
  • Saktë
  • Right
  • No, values for right are (d_row, d_col) = (0, 1)

Pyetje

Ndërsa ju përgjigjeni pyetjeve, kthehuni tek programi “gjarpri” sipas nevojës dhe kërkoni pjesët që duhet t’i përgjigjeni.

How many rows does the board have?

    Q-75: Cilat janë koordinatat e këndit të sipërm të majtë të katrorit (row, col)?

  • x = row*a + a, y = col*a + a
  • Provo përsëri
  • x = col*a + a, y = row*a + a
  • Provo përsëri
  • x = row*a, y = col*a
  • Provo përsëri
  • x = col*a, y = row*a
  • Saktë

    Q-76: Cilat fjali janë të vërteta?

  • Në secilën listë kornizë 'gjarpri' shtrihet nga një element i ri që përfaqëson pozicionin e ri të kokës së gjarprit.
  • Nuk ezkiston kjo komandë në program
  • Lista 'gjarpri' ka të njjtin numër elementësh në program.
  • Saktë
  • Një element që përfaqëson fundin e bishtit të gjarprit është hequr nga lista 'gjarpër' në secilën kornizë.
  • Nuk ezkiston kjo komandë në program