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/
