7. PyGame: juhtimine klaviatuuriga
Päris Pygame'i teema alguses puutusime kokku sündmuste jälgimisega, ainukeseks sündmuseks oli siis küll vaid programmi sulgemine.
Sündmusi, mida kontrollitakse, on erinevaid:
- KEYDOWN (klahvivajutus)
- KEYUP (klahvi lahtilaskmine)
- MOUSEBUTTONDOWN (hiirenupu vajutus)
- MOUSEBUTTONUP (hiirenupu lahtilaskmine)
- MOUSEMOTION (hiire liigutamine)
- jne
Klaviatuurisündmuste tüüpideks on KEYDOWN ja KEYUP. Järgnev lõik kontrollib lisaks programmi sulgemisele nooleklahvide vajutusi ning reageerib sellele pildi liigutamisega õiges suunas.
x = 200 y = 200 samm = 10 running = True while running: ekraan.fill([255, 255, 255]) ekraan.blit(pilt, (x,y)) pygame.display.flip() for i in pygame.event.get(): if i.type == pygame.QUIT: running = False # Kui sündmuseks on klahvi allavajutamine... elif i.type == pygame.KEYDOWN: # ... ja klahviks on nooleklahv üles liikumiseks,... if i.key == pygame.K_UP: # ... siis vähendame y-koordinaati y = y - samm elif i.key == pygame.K_DOWN: y = y + samm elif i.key == pygame.K_LEFT: x = x - samm elif i.key == pygame.K_RIGHT: x = x + samm pygame.quit()
Selleks, et objekti liigutamiseks ei peaks klahvi pidevalt vajutama, võib kasutada klahvi allhoidmise kontrolli set_repeat(delay, interval), lisades enne while-tsüklit näiteks sellise rea:
pygame.key.set_repeat(1,10)
Lisamaterjalid
- Sündmuste loetelu: http://www.pygame.org/docs/ref/event.html
- Klaviatuuriga seotud sündmused: http://www.pygame.org/docs/ref/key.html
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/