top of page

Als Einsteigerprojekt in PyGame kannst du hier ein kleines Autorennspiel programmieren. In einzelnen Kapiteln lernst du PyGame kennen und siehst dein Rennspiel wachsen.

​

​

 

 

 

 

 

Einführung in PyGame Rennspiel

 

Nachdem du Python und PyGame auf deinem Computer installiert hast, kannst du nun loslegen.

 

Teil 1: Einführung in PyGame

 

Zuerst öffnest du den Python Editor IDLE über das Startmenü (Start -> Python -> IDLE). Damit du nun Programmieren kannst, öffne über File -> New File in der Menüleiste von IDLE ein neues Python Script. In diesem Script wirst du dein Rennspiel programmieren.

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600


white = (255, 255, 255)

crashed = False

# Init
pygame.init()

Um PyGame in deinem Script nutzen zu können, musst du es importieren. Danach definierst du ein paar variablen, die du gleich brauchen wirst. Und dann folgt das wichtigste indem du pygame.init() schreibst. Damit sorgst du dafür, dass PyGame deine späteren Befehle befolgt.

game_display = pygame.display.set_mode((display_width, display_height))
game_clock   = pygame.time.Clock()

pygame.display.set_caption("Mein Rennspiel")

Als nächstes definierst du die Größe des Fensters deines Spiels. In diesem Fall ist das Fenster 800x600 Pixel groß. Das passt auf jeden Fall auf den Bildschirm deines Computers. Du kannst über die beiden oben definierten Variablen display_width und display_height die Größe des Fensters jederzeit ändern.

Wichtig ist auch die Uhr (englisch: Clock) des Spiels. Über sie kannst du einstellen, wieviele Bilder pro Sekunde (BpS) dein Spiel hat. Das ist wichtig, damit nacheinander angezeigte Einzelbilder am Ende, wie im Film, wie eine flüssige Bewegung aussehen.

Dann legst du noch den Namen deines Spiels fest, hier beispielhaft "Mein Rennspiel".

# Main
while not crashed:
  for event in pygame.event.get():
       #print(event)        
       if event.type == pygame.QUIT:
           crashed = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               crashed = True

  game_display.fill(white)

  pygame.display.update()
  game_clock.tick(60)

Hier ist nun die Hauptschleife deines Spiels. Sie wird solange als Dauerschleife durchlaufen, bis die Variable crashed den Wert True (wahr) hat. Mit PyGame kannst du Tastatureingaben erkennen und auswerten. Damit du die Hauptschleife und damit dein Spiel beenden kannst, schaut das Programm hier auf das Drücken von Tasten. Das wird später noch wichtig, wenn du dein Rennauto bewegen willst. Durch das Drücken der ESC-Taste kannst du dein Spiel beenden.

Die Hintergrundfarbe des Spielfelds wird weiß und die Bildwiederholrate wird auf 60 BpS gestellt.

Mit dem Befehl pygame.display.update() sorgst du dafür, dass alle Änderungen des Spiels (Hintergrundfarbe, Position des Rennautos oder von Objekten, uvm.) auf dem Bildschirm aktualisiert werden.

pygame.quit()
quit()

Nachdem du ESC gedrückt hast, wird das Spiel beendet. Dazu wird mit pygame.quit() PyGame und mit quit() das Script beendet.

Hier findest du das vollständige Script für diesen Teil:

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600

white = (255, 255, 255)

crashed = False

# Init
pygame.init()

game_display = pygame.display.set_mode((display_width, display_height))
game_clock   = pygame.time.Clock()

pygame.display.set_caption("Mein Rennspiel")

# Main
while not crashed:
  for event in pygame.event.get():
       #print(event)        
       if event.type == pygame.QUIT:
           crashed = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               crashed = True

  game_display.fill(white)

  pygame.display.update()
  game_clock.tick(60)

pygame.quit()
quit()

Dein Python Programm startest du indem du in IDLE Run -> Run Module oder F5 drückst. Damit das Programm dann starten kann, musst du das Script natürlich vorher speichern.

 

Teil 2 Das Rennauto

 

Nachdem du in Teil 1 das Fenster für dein Rennspiel erstellt hast, wird nun das Rennauto im Fenster positioniert.

Zuerst definierst du dir die globalen Variablen x und y. Mit beiden Variablen legst du die Position des Autos auf der Rennstrecke fest.

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600

white = (255, 255, 255)

crashed = False

​

### NEU ###

x = (display_width  * 0.47)
y = (display_height * 0.78)

###


# Init
pygame.init()

Als nächstes brauchst du ein Bild des Rennautos, das du in das Spiel lädst. Du kannst dazu das folgende Bild (Rennwagen.png) verwenden. Oder, wenn du schon mit einem Bildbearbeitungsprogramm, wie Paint oder Photoshop umgehen kannst, ein eigenes Rennauto erstellen.

 

Nun bindest du das Bild des Rennautos in dein Spiel ein.

# Init
pygame.init()

game_display = pygame.display.set_mode((display_width, display_height))
game_clock   = pygame.time.Clock()

​

### NEU ###
car_image    = pygame.image.load("Rennwagen.png")
###


pygame.display.set_caption("Mein Rennspiel")

Nun benötigst du eine Funktion, mit der du das geladene Rennauto auf die Rennstrecke bringst. Dazu definierst du in deinem Script eine neue Funktion car(x, y). Funktionen definiert man in Python mit dem Initialwort def <Funktionsname>(Übergabeparameter):. Die Übergabeparameter sind in diesem Fall die Koordinaten x und y auf der Rennstrecke.

# Funktionen
##################################################
def car(x, y):
  game_display.blit(car_image, (x, y))

Zum Schluss dieses Teils musst du nur noch die Position des Rennautos in der Main Schleife setzen, indem du die oben definierte Funktion car(x, y) mit den definierten globalen Variablen x und y aufrufst.

# Main
while not crashed:
  for event in pygame.event.get():
       #print(event)        
       if event.type == pygame.QUIT:
           crashed = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               crashed = True
       
  game_display.fill(white)

    ### NEU ###
  car(x, y)

    ###

  pygame.display.update()
  game_clock.tick(60)

Wenn du nun dein Script ausführst, wirst du im unteren Bereich des Fensters mittig dein Rennauto sehen.

Das vollständige Script für diesen Teil findest du hier:

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600

white = (255, 255, 255)

crashed = False

x = (display_width  * 0.47)
y = (display_height * 0.78)

# Init
pygame.init()

game_display = pygame.display.set_mode((display_width, display_height))
game_clock   = pygame.time.Clock()
car_image    = pygame.image.load("Rennwagen.png")

pygame.display.set_caption("Mein Rennspiel")

# Funktionen
##################################################
def car(x, y):
  game_display.blit(car_image, (x, y))

# Main
while not crashed:
  for event in pygame.event.get():
       #print(event)        
       if event.type == pygame.QUIT:
           crashed = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               crashed = True
       
  game_display.fill(white)
  car(x, y)

  pygame.display.update()
  game_clock.tick(60)

pygame.quit()
quit()

 

Teil 3: Das Rennauto bewegen

 

Nachdem du im letzten Teil dein eigenes Rennauto auf die Strecke gebracht hast, ist es Zeit, dass es auch fährt. Wir wollen es zwar nicht schneller oder langsamer werden lassen, sondern zum Beginn lenken. Das heißt das Auto soll sich nach links und rechts bewegen können.

Das Auto lässt sich am Besten mit der Tastatur steuern. Hierzu ist es notwendig, dass du in deinem Spiel Tastatureingaben verarbeitest. PyGame gibt dir die Möglichkeit jede Taste der Tastatur zu erkennen und ob diese Taste gedrückt oder wieder losgelassen wurde.

Wie du Tastendrücke erkennst, wirst du gleich sehen, doch vorher gibt es wieder einige globale Variablen zu definieren.

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600

white = (255, 255, 255)

game_exit = False

​

x = (display_width  * 0.47)
y = (display_height * 0.78)

​

### NEU ###

x_change = 0
car_speed = 5

###


# Init
pygame.init()

Wie du sehen kannst, sind die beiden Variablen x_change und car_speed hinzugekommen. Die Variable x_change gibt die Bewegungsänderung des Autos für jeden Durchlauf der Hauptschleife an. Und mit car_speed kannst du bestimmen, wie weit sich dein Auto mit jedem Tastendruck bewegt.

Nun ist es an der Zeit zu entscheiden, mit welchen Tasten du dein Auto steuern willst. Für diese Übungsaufgabe, habe ich mich für die Tasten Pfeil links (<-) für links fahren und Pfeil rechts (->) für rechts fahren.

Deine Hauptschleife sieht dann folgendermaßen aus:

# Main
while not game_exit:
  for event in pygame.event.get():
       #print(event)
       if event.type == pygame.QUIT:
           game_exit = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               game_exit = True

    ### NEU ###
           elif event.key == pygame.K_LEFT:
               x_change = -car_speed
           elif event.key == pygame.K_RIGHT:
               x_change = car_speed
       elif event.type == pygame.KEYUP:
           if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
               x_change = 0

  x += x_change
   ###


   game_display.fill(white)
  car(x, y)

  pygame.display.update()
  game_clock.tick(60)

In Teil 1 hast du bereits gelernt, dass du dein Spiel durch Drücken der Esc-Taste beenden kannst. Nun ist neu hinzugekommen, dass du durch Drücken der linken Pfeiltaste (pygame.K_LEFT) dein Auto um car_speed, also 5 Pixel nach links bewegst. Durch Drücken der rechten Pfeiltaste (pygame.K_RIGHT)  bewegst du dein Auto 5 Pixel nach rechts. Wenn du die Taste gedrückt hältst, wiederholt sich die Bewegung um 5 Pixel mit jedem Durchlauf der Hauptschleife. Lässt du die Taste wieder los, wir x_change auf 0 gesetzt und dein Auto bleibt in seiner Position, da die Variable x, die die Position des Autos beinhaltet mit 0 addiert wird.

Das vollständige Script für diesen Teil sieht wie folgt aus:

# Import
import pygame

# Globale Variablen
display_width  = 800
display_height = 600

white = (255, 255, 255)

game_exit = False

x = (display_width  * 0.47)
y = (display_height * 0.78)

x_change = 0

car_speed = 5

# Init
pygame.init()

game_display = pygame.display.set_mode((display_width, display_height))
game_clock   = pygame.time.Clock()
car_image    = pygame.image.load("Rennwagen.png")

pygame.display.set_caption("Mein Rennspiel")

# Funktionen
##################################################
def car(x, y):
  game_display.blit(car_image, (x, y))

# Main
while not game_exit:
  for event in pygame.event.get():
       #print(event)
       if event.type == pygame.QUIT:
           game_exit = True
       elif event.type == pygame.KEYDOWN:
           if event.key == pygame.K_ESCAPE:
               game_exit = True
           elif event.key == pygame.K_LEFT:
               x_change = -car_speed
           elif event.key == pygame.K_RIGHT:
               x_change = car_speed
       elif event.type == pygame.KEYUP:
           if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
               x_change = 0

  x += x_change
   
  game_display.fill(white)
  car(x, y)

  pygame.display.update()
  game_clock.tick(60)

pygame.quit()
quit()

​

Rennspiel_Crash.PNG

Impressum | Kontakt | Datenschutz

​

© 2024 code4kidz e.V. Vorsitzender: Johannes Rosiak, Lehmberg 14, 30938 Burgwedel
Mail: info@code4kidz.de | Tel.: 0179 6835090

bottom of page