Seuraava koodi näyttää animaation, jossa pelihahmo liikkuu ruudun halki vasemmalta oikealle:
# -*- coding: utf-8 -*-
import pygame
# peliin liittyvät yleiset muuttujat ja niiden alustaminen
ruudun_leveys = 640
ruudun_korkeus = 400
naytto = pygame.display.set_mode((ruudun_leveys, ruudun_korkeus))
pygame.display.set_caption("Pelin otsikko")
# ladataan kuvat ym
ukko = pygame.image.load("ukko.png")
# funktiot
def kontrolli(sijainti):
print "kontrolli, eli käyttäjän toimintojen kuuntelu. Tarkistetaan vain lopetus"
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()
def logiikka(sijainti):
print "hahmon siirtäminen tapahtuu logiikka-osiossa."
sijainti[0] = sijainti[0] + 1
def piirtaminen(ikkuna, sijainti):
print "piirtaminen, eli pelin grafiikan piirtäminen käyttäjälle"
# tyhjennetään ruutu, tässä käytetty valkoista väriä
# red green blue
ikkuna.fill((255, 255, 255))
ikkuna.blit(ukko, sijainti)
# näytetään kuva
pygame.display.flip()
def main():
# alusta käytettävät muuttujat (luodaan tietorakenteet)
sijainti = [50, 50]
kello = pygame.time.Clock()
while True:
kontrolli(sijainti)
logiikka(sijainti)
piirtaminen(naytto, sijainti)
# päivitetään peliä 20 kertaa sekunnissa
kello.tick(20)
# kun kaikki on valmista, käynnistetään peli
main()
Ideana on, että pelin päämetodissa olevan pääsilmukan jokaisella kierroksella kutsutaan logiikka-funktiota, joka kasvattaa pelihahmon x-koordinaattia yhdellä.
Lisäksi silmukan lopussa on komento kello.tick, joka tahdistaa silmukan niin, että silmukassa oleva koodi suoritetaan 20 kertaa sekunnissa. Tämän ansiosta pelihahmo liikkuu sopivalla tasaisella nopeudella.
Aiemmissa esimerkeissä näppäimistön käsittelyn ongelmana oli, että vaikka näppäintä piti pohjassa, pelihahmo liikkui vain askeleen. Tämä ongelma on korjattu seuraavassa koodissa:
# -*- coding: utf-8 -*-
import pygame
# peliin liittyvät yleiset muuttujat ja niiden alustaminen
ruudun_leveys = 640
ruudun_korkeus = 400
naytto = pygame.display.set_mode((ruudun_leveys, ruudun_korkeus))
pygame.display.set_caption("Pelin otsikko")
# ladataan kuvat ym
ukko = pygame.image.load("ukko.png")
# funktiot
def kontrolli(sijainti):
print "kontrolli, eli käyttäjän toimintojen kuuntelu. Tarkistetaan vain lopetus"
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()
napit = pygame.key.get_pressed()
if napit[pygame.K_RIGHT]:
sijainti[0] = sijainti[0] + 5
if napit[pygame.K_LEFT]:
sijainti[0] = sijainti[0] - 5
if napit[pygame.K_DOWN]:
sijainti[1] = sijainti[1] + 5
if napit[pygame.K_UP]:
sijainti[1] = sijainti[1] - 5
def logiikka(sijainti):
print "Ei tehdä mitään.."
def piirtaminen(ikkuna, sijainti):
print "piirtaminen, eli pelin grafiikan piirtäminen käyttäjälle"
# tyhjennetään ruutu, tässä käytetty valkoista väriä
# red green blue
ikkuna.fill((255, 255, 255))
ikkuna.blit(ukko, sijainti)
# näytetään kuva
pygame.display.flip()
def main():
# alusta käytettävät muuttujat (luodaan tietorakenteet)
sijainti = [50, 50]
kello = pygame.time.Clock()
while True:
kontrolli(sijainti)
logiikka(sijainti)
piirtaminen(naytto, sijainti)
# päivitetään peliä 20 kertaa sekunnissa
kello.tick(20)
# kun kaikki on valmista, käynnistetään peli
main()
Tässä esimerkissä pyydämme ensin kaikkien näppäinten tilat komennolla pygame.key.get_pressed, joka palauttaa listan. Tämä lista sijoitetaan muuttujaan napit, josta kysytään sen jälkeen jokaiselle napille erikseen ovatko ne painettuina.