Dies ist eine alte Version des Dokuments!


import pygame # pygame-Bibliothekt importieren
import sys # verwendet man, um das Programm zu beenden

# Pygame initialisieren
pygame.init()

# Bildschirm-Einstellen
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Kollision und Steuerung")

# Konstanten für Farben definieren
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)

# Spieler erstellen (erbt von pygame.sprite.Sprite)
class Player(pygame.sprite.Sprite):
    def __init__(self, x, y, color):
        super().__init__()
        self.image = pygame.Surface((50, 50))  # Größe des Sprites
        self.image.fill(color)  # Färbe das Sprite
        self.rect = self.image.get_rect()  # Rechteck für Position/Kollision
        self.rect.topleft = (x, y)  # Startposition

    def update(self, keys): # update wird in jedem Frame aufgerufen
        # Bewegung mit Pfeiltasten
        if keys[pygame.K_UP]:
            self.rect.y -= 5
        if keys[pygame.K_DOWN]:
            self.rect.y += 5
        if keys[pygame.K_LEFT]:
            self.rect.x -= 5
        if keys[pygame.K_RIGHT]:
            self.rect.x += 5

class Obstacle(pygame.sprite.Sprite):
    def __init__(self, x, y, color):
        super().__init__()
        self.image = pygame.Surface((50, 50))  # Größe des Sprites
        self.image.fill(color)  # Färbe das Sprite
        self.rect = self.image.get_rect()
        self.rect.topleft = (x, y)

# Sprite-Gruppen erstellen
all_sprites = pygame.sprite.Group()  # Enthält alle Sprites
obstacle_group = pygame.sprite.Group()  # Für Hindernisse

# Sprites erstellen
player = Player(100, 100, BLUE)
obstacle = Obstacle(400, 300, RED)

# Sprites zu Gruppen hinzufügen
all_sprites.add(player)
all_sprites.add(obstacle)
obstacle_group.add(obstacle)

# Spiel-Loop
clock = pygame.time.Clock()
while True:
    # Ereignisse abfragen
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Tastenabfrage
    keys = pygame.key.get_pressed()
    player.update(keys)  # Bewegung des Spielers

    # Kollisionserkennung: Sprite mit Gruppe testen,
    # False heisst, dass der Spite nicht gekillt wird,
    # d.h. nicht aus der Gruppe genommen wird.
    if pygame.sprite.spritecollide(player, obstacle_group, False):
        print("Kollision erkannt!")

    # Bildschirm aktualisieren
    screen.fill(WHITE)  # Hintergrund weiß
    all_sprites.draw(screen)  # Alle Sprites zeichnen
    pygame.display.flip()

    clock.tick(60)  # Bildrate auf 60 FPS begrenzen

  • ef/pygame/example2.1734446584.txt.gz
  • Zuletzt geändert: 2024/12/17 15:43
  • von lehmannr