Die Funktion colliderect() liefert True, wenn zwei Spielobjekte sich berühren.

Ein Beispiel aus dem PGZ Blaster

Die Aktualisierungs-Funktion der Rakete überprüft für jedes einzelne Ufo, ob eine Kollision mit der Raketestattgefunden hat:

     def aktualisiere(self):
        self.y -= self.geschwindigkeit
        if(self.top < 0):
            self.aktiv = False
        for ufo in spiel.ufos:
            if self.colliderect(ufo):
                ufo.getroffen()
                self.aktiv = False
                return
Ein komplettes Programmbeispiel

Wenn Schiff und Ufo sich überlappen, dann wird das Programmfenster schwarz gefüllt, sonst weiß.

Achtung: Dieses Beispiel funktioniert nur, wenn es im selben Ordner liegt wie die PGZ Blaster Dateien!

import pgzrun

WIDTH, HEIGHT = 500, 700

class Schiff(Actor):
    def __init__(self):
        Actor.__init__(self, 'schiff')
        self.bottom = HEIGHT
        self.centerx = WIDTH / 2
        self.geschwindigkeit = 2

    def aktualisiere(self):
        if keyboard.left:
            self.x -= self.geschwindigkeit
        if keyboard.right:
            self.x += self.geschwindigkeit
        if keyboard.up:
            self.y -= self.geschwindigkeit
        if keyboard.down:
            self.y += self.geschwindigkeit
        self.clamp_ip(0, 0, WIDTH, HEIGHT)

schiff = Schiff()

ufo = Actor("ufo", (WIDTH/2, HEIGHT/2))

def update():
    schiff.aktualisiere()

def draw():
    if schiff.colliderect(ufo):
        screen.fill((0, 0, 0))
    else:
        screen.fill((255, 255, 255))
    
    screen.draw.filled_rect(schiff._rect, "red")
    schiff.draw()
    screen.draw.filled_rect(ufo._rect, "red")
    ufo.draw()


pgzrun.go( )

Zuletzt geändert: Mittwoch, 12. März 2025, 08:44