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 Sprite 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