Pelirungot koostuvat lähes aina kolmesta osa-alueesta; kontrollista, eli käyttäjän syötteiden lukemisesta ja niihin reagoimisesta, logiikasta, eli pelin tilanteen päivittämisestä, sekä piirtämisestä, eli pelin piirtämisestä ja näyttämisestä käyttäjälle. Rakennetaan pelirunko, jossa jokaiselle osalle on oma funktio. Alussa runko tulostaa vain viestin jokaisessa osassa, eikä pygamea käytetä.
# -*- coding: utf-8 -*- def kontrolli(): print "kontrolli, eli käyttäjän toimintojen kuuntelu ja niihin reagointi" def logiikka(): print "logiikka, eli pelin toimintojen suorittaminen; mm. liikkeiden ja törmäysten tarkastaminen" def piirtaminen(): print "piirtaminen, eli pelin grafiikan piirtäminen käyttäjälle" def main(): print "pelihahmojen ym. luominen" while True: kontrolli() logiikka() piirtaminen() print "odotetaan hetki..." # kun kaikki on valmista, käynnistetään peli main()
Yllä oleva pelirunko suorittaa jokaisen osa-alueen vuorollaan. Kun piirtäminen on suoritettu, jatketaan taas kontrollista. Alla on esitettynä esimerkkipeli, jossa voidaan siirtää hahmoa oikealle.
# -*- coding: utf-8 -*- import pygame, sys # peliin liittyvät yleiset muuttujat ja niiden alustaminen fps = 40 ruudun_leveys = 640 ruudun_korkeus = 400 naytto = pygame.display.set_mode((ruudun_leveys, ruudun_korkeus)) pygame.display.set_caption("Pelin otsikko") ## lataa täällä peliin liittyvät kuvat ja äänet ukko = pygame.image.load("dude.png") def kontrolli(hahmon_sijainti): print "kontrolli, eli käyttäjän toimintojen kuuntelu" for tapahtuma in pygame.event.get(): if tapahtuma.type == pygame.QUIT: exit() # ohjelmoi tänne muiden toimintojen käsittely # painettujen näppäinten käsittely painetut_napit = pygame.key.get_pressed() if painetut_napit[pygame.K_RIGHT]: hahmon_sijainti[0] = hahmon_sijainti[0] + 1 def logiikka(hahmon_sijainti): print "logiikka, eli pelin toimintojen suorittaminen; mm. liikkeiden ja törmäysten tarkastaminen" # tarkastetaan mennäänkö ulos ruudulta if(hahmon_sijainti[0] + ukko.get_width() > ruudun_leveys): hahmon_sijainti[0] -= 1 def piirtaminen(ikkuna, hahmon_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)) # piirrä täällä peliisi liittyvät taustakuvat ja hahmot sekä muu grafiikka ikkuna.blit(ukko, hahmon_sijainti) # tai # ikkuna.blit(ukko, [hahmon_sijainti[0], hahmon_sijainti[1])) # näytetään kuva pygame.display.flip() def main(): # luo pelihahmojen sijainnit yms (luodaan tietorakenteet) ukon_sijainti = [50, 50] kello = pygame.time.Clock() while True: kontrolli(ukon_sijainti) logiikka(ukon_sijainti) piirtaminen(naytto, ukon_sijainti) # suoritetaan peliä siten, että sen fps on 40 kello.tick(fps) print ukon_sijainti # kun kaikki on valmista, käynnistetään peli main()
Huomaa miten yllä jokaiselle funktiolle annetaan parametrina ukon sijainti. Tällöin funktiot voivat käsitellä sijaintia, ja muuttaa sitä tarpeen vaatiessa.