Skapa ett spel med Pygame – Logik

Vi kan även införa logik i spelet. Beroende på vad som händer i spelet, ska något nytt hända!

I föregående avsnitt visade vi hur man kan skapa en game-loop för att skapa basen för ett spel i pygame. Vi har även visat hur man kan använda piltangenterna för att styra spelaren. Nu behövs lite logik i spelet. Vi ska programmera en fallande vägg med ett hål i. Målet är att styra spelaren igenom hålet. Om man nuddar väggen, får man game-over. Vi ska även lägga till en räknare, som håller reda på hur många hål vi passerat. Vi utgår från koden som vi skapat i tidigare avsnitt:

Visa kod


Skapa en fallande vägg

Vi laddar in en bild som är 64 x 64 pixlar stor. Detta är en ruta i spelet.

Eftersom spelet är 10 x 64 pixlar bred, vet vi att det får plats 10 väggblock på spelplanen. Därför skapar vi 8 objekt av wall, vilket innebär att hålet blir två rutor bred.

Koden ovan kommer rita ut ett block på åtta platser på samma höjd, med 64 pixlar mellan varje ruta. Det kommer bli ett hål som är två rutor stort.

Programmera flera lika dana objekt i python

Gör så att väggen faller

Gör så att väggen faller genom att öka wall_y som hanterar y-positionen på väggen. När väggen har fallit hela vägen till botten av spelplanen, börjar den om från toppen igen.

Väggen faller nu neråt hela tiden och hålet kommer bytas varje gång väggen har kommit till marken.


Sätt game-over om spelaren krockar med väggen

Om spelaren åker in i väggen får vi game-over. Vi kollar om spelarens position krockar med väggen med följande kod:

Om spelarens x- och y-koordinat är innanför väggens koordinater så returneras True, annars False.


Byt till meny-läge vid game-over

Vi kan blanda mellan meny-läge och spel-läge med variabeln is_game. Om man trycker på Enter i meny-läget, startas ett nytt spel.


Skapa en räknare

Slutligen skapar vi en räknare som håller koll på hur många väggar vi har passerat:

Där nmbr_of_walls är antal passerade väggar som uppdateras i funktionen wall_handler.

Spelet är nu klart! All kod hittar du nedan! Testa själv!

Bakåt    |    Framåt