Die Funktion clamp_ip() kann ein Spielobjekt zurückschieben, wenn es einen gegebenen Bereich verlässt:

Ein Beispiel aus dem PGZ Blaster

In der Aktualisierungs-Funktion des Schiffes sorgt clamp_ip() dafür, dass das Schiff das Programmfenster nicht verlassen kann.
0,0, WIDTH, HEIGHT sind die Abmessungen des Programmfensters!

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

Ein komplettes Programmbeispiel

Hier ist das Schiff in einem blauen Rechteck "gefangen".

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 / 2
        self.centerx = WIDTH / 2
        self.geschwindigkeit = 6

    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
        schiff.clamp_ip(rechteck)

schiff = Schiff()

rechteck = Rect(100, 100, WIDTH-200, HEIGHT-200)

def update():
    schiff.aktualisiere()

def draw():
    screen.fill((255, 255, 255))
    screen.draw.filled_rect(rechteck, "blue")
    screen.draw.filled_rect(schiff._rect, "red")
    schiff.draw()

pgzrun.go( )

Zuletzt geändert: Donnerstag, 13. März 2025, 07:26