Programmera ett hoppa-och-ducka spel i Python
I denna videoserie ska vi bygga spelet “Blob Runner”, ett slags klassiskt hoppa-och-ducka spel där fiender kommer flygandes fram över spelplanen. Vårt uppdrag som spelare är att undvika fienderna och samla på oss så mycket poäng som möjligt.
Denna serie kommer i tre delar på vår YouTube-kanal och passar både för dig som redan gjort vår kurs inom spelprogrammering, men också för dig som kan grunderna i Python är intresserad av att testa på att programmera egna spel i 2D.
Saker vi kommer lära oss i detta spel är bl.a:
- Hur man kan skapa enkel gravitation i ett spel
- Hur vi kan animera vår spelare genom att använda oss av olika bilder
- Hur vi hanterar tangenttryckningar för att hoppa och ducka (och samtidigt undvika buggar)
I detta spel kommer vi att använda oss av spelmotorn Pygame Zero som är perfekt för att komma igång med spelprogrammering i 2D. Vi programmerar i Python och använder oss av Pycharm för att programmera.
Vi kommer att använda oss av bilder från Kenney. Dessa är fria att använda som man vill (CC0 licens). Du hittar bilderna här:
https://kenney.nl/assets/abstract-platformer
Videoserien ”Blob Runner”
I första delen skapar vi vår spelare (vår “blob”). Denna kan hoppa med hjälp av enkel gravitation. Vi skapar också en fiende som flyger in från högra kanten av spelplanen.
I andra delen så lägger vi till kollision i spelet, så att man faktiskt kan förlora när man träffar fienden. Vi animerar också spelaren genom att använda olika bilder beroende på om spelaren hoppar eller inte. Slutligen lägger vi också till poäng i spelet.
I tredje delen så introducerar vi svårighetsgrader i spelet. Desto längre man kommit i spelet, desto svårare blir också spelet. Vi gör så att spelaren kan ducka, och väljer att slumpa fram om fienden ska komma på en lägre eller högre höjd. Spelet är nu klart!
Vill du lära dig mer om spelprogrammering? Kolla in våra kurser! Vi har en kurs specifikt för spelprogrammering i Python.
Kod till “Blob Runner”
import pgzrun import random WIDTH = 700 HEIGHT = 400 marknivå = HEIGHT - 100 spelare = Actor("spelare", (100,100)) fiende = Actor("fiende", (WIDTH, marknivå)) gravitation = 0.8 hastighet = 0 svårighetsgrad = 8 poäng = 0 game_over = False spelare_duckar = False def draw(): screen.fill((50,0,80)) spelare.draw() fiende.draw() screen.draw.text(str(poäng), center=(WIDTH/2, 100), fontsize=40) def update(): global game_over if not game_over: update_spelare() update_fiende() update_svårighetsgrad() else: spelare.image = "spelare_dog" # om spelare kolliderar med fiende -> spelet slut if spelare.colliderect(fiende): game_over = True def update_svårighetsgrad(): global svårighetsgrad if poäng < 100: svårighetsgrad = 8 elif poäng < 200: svårighetsgrad = 12 elif poäng < 300: svårighetsgrad = 14 else: svårighetsgrad = 16 def update_fiende(): global poäng fiende.x -= svårighetsgrad fiende.angle += 1 if fiende.x < 0: fiende.x = WIDTH poäng += 10 fiende.y = random.choice([marknivå, marknivå -40]) def update_spelare(): global hastighet if hastighet > 0: spelare.image = "spelare_faller" elif hastighet < 0: spelare.image = "spelare_hoppar" elif spelare_duckar: spelare.image = "spelare_duckar" else: spelare.image = "spelare" spelare.y += hastighet hastighet += gravitation if spelare.y > marknivå: hastighet = 0 # tangent är nedtryckt def on_key_down(key): global hastighet, spelare_duckar if key == keys.SPACE and hastighet == 0 and not spelare_duckar: hastighet = -12 # spelare duckar (och är inte i luften) if key == keys.DOWN and hastighet == 0: spelare_duckar = True spelare.y += 20 def on_key_up(key): global spelare_duckar if key == keys.DOWN and spelare_duckar: spelare_duckar = False spelare.y -= 20 pgzrun.go()
Unga Programmerare håller kurser i programmering för barn och ungdomar. Unga Programmerare startades av studenter från Chalmers Tekniska Högskola.
Företagsinfo
Innovation Institute of Sweden AB
Box 2062, 116 74 Stockholm
Org.nr. 559290-7603
Länkar