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.