Menu
CoddyTech

Pfeiltasten

Lektion 5 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.

Um das Quadrat zu bewegen, speicherst du seine Position in Variablen und zeichnest es in jedem Frame dort. Ändere die Variablen, und im nächsten Frame wird das Quadrat an einer anderen Stelle angezeigt.

pygame.key.get_pressed() teilt dir mit, welche Tasten gerade gedrückt gehalten werden. Greife mit einer Tastenkonstante wie pygame.K_RIGHT darauf zu: Das Ergebnis ist True, solange diese Taste gedrückt ist.

x = 100

while running:
    # Ereignisse
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        x += 4
    # füllen, dann bei x zeichnen

Halte die rechte Pfeiltaste gedrückt, und das Quadrat bewegt sich in jedem Frame um 4 Pixel, also bei 60 Frames pro Sekunde um 240 Pixel pro Sekunde. Die Pfeiltasten heißen K_LEFT, K_RIGHT, K_UP und K_DOWN. Nach oben bedeutet ein kleineres y.

Lege die Variablen vor der Schleife an. Eine innerhalb der Schleife gesetzte Variable wird in jedem Frame zurückgesetzt.

challenge icon

Aufgabe

Einfach

Bewege das Quadrat mit den Pfeiltasten:

  1. Lege vor der Schleife x, y = 220, 160 und speed = 4 fest.
  2. Lies in der Schleife nach den Ereignissen die Tasten mit pygame.key.get_pressed() aus. Jede gedrückt gehaltene Pfeiltaste verändert x oder y um speed.
  3. Zeichne das Quadrat bei (x, y, 40, 40).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (220, 160, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground