Skapa ett spel med Pygame

Ett spel behöver vara aktivt hela tiden. Spelet ska dels rita ut all grafik, dels lyssna till tangentryckningar och hantera all logik beroende på vad som händer i spelet. Detta hanterar vi med en game-loop.

Skapa en Game-loop till Pygame

Vi ska nu skapa skelettet till spelet, en så kallad game-loop som hanterar all logik och hantering av spelplanen. Game-loopen ska även hantera input av tangenttryckningar. Mycket av detta kommer gratis i biblioteket pygame.

1: Importera biblioteket pygame

Vi börjar med att importera Pygame:

Du kan nu använda funktioner från Pygame. Pygame.locals innehåller exempelvis funktioner för att känna av tangenttryckningar.

2: Initiera Pygame-modulen

Vi kan sedan initiera alla moduler som vi kommer använda oss av.

pygame.init() initierar alla moduler som vi tidigare har importerat och pygame.font.init() gör så att vi kan använda oss av fonter, det vill säga skriva ut texter på spelplanen. Man kan säga att vi har aktiverat de moduler som vi vill använda oss av.

3: Bestäm storleken på spelplanen

Vi ska nu bestämma storleken på spelplanen. För att underlätta, delar vi in spelplanen i ett rutnät där varje ruta är 64 x 64 pixlar stor. Vi bestämmer att bredden ska vara 10 rutor, och höjgden 8 rutor.

Vi kan sedan skapa spelplanen i pygame genom att anropa

4: Skapa x- och y-position för spelaren

När vi ska rita ut vår spelare, behöver vi en x- och en y-position. Vi skapar helt enkelt två variabler som bestämmer var på som spelaren ska ritas ut.

Observera att koordinaten (0,0) är högst upp i vänstra hörnet i Pygame.

5: Ladda in bilder

Vi börjar med att ladda in bilden på spelaren. Bilden är i detta fall 64 x 64 pixlar stor. Det innebär alltså att bilden kommer vara exakt lika stor som en ruta i spelplanen.

Bilden på spelare “hero.png”, lägger vi i samma mapp som vi sparat våran kod för att bilden ska hittas vid inläsningen.

6: Skapa en evighetsloop

Nu är allt initierat. Vi kan nu skapa en evighetsloop som upprepas för alltid.

Denna loop kommer alltid vara uppfylld. Den kommer alltså pågå för alltid. I denna loop kan vi nu sköta all logik och rita ut spelplanen.

7-9: Rita ut alla objekt

I while-loopen kan vi nu rita ut alla objekt genom att anropa pygames funktioner.

10: Gå igenom alla event

Pygame.event innehåller alla event som skett sen senaste loop. Det är här vi senare kommer känna av tangenttryckningar. Just nu kollar vi enbart om spelplanen har stängts ner (pygame.QUIT). I så fall avbryter vi programmet (exit(0)) och spelet (while-loopen bryts och spelet slutförs).

Sammanställer vi all kod, ser den ut såhär:

Om vi kör programmet kommer enbart spelaren ritas ut på position (200,200). Stänger man av programmet så avbryts while-loopen och programmet stängs av.

gameloop för ett spel i pygame
Bakåt    |    Framåt