Kollisionsabfrage zwischen Klassen
Verfasst: Sonntag 22. November 2020, 18:34
Hallo,
ich habe eine grundlegende Frage, ob ich zwischen unterschiedlichen Klassen z. B. Kollisionsabfragen durchführen kann.
Mal angenommen ich habe zwei Objekte die sich aufeinander zubewegen, wie in folgendem Code:
Früher oder später werden die sich ja treffen und dann möchte ich ein Event auslösen. Ich weiß dass ich eine einzige Klasse mit dem Titel "Objekte" erstellen könnte und dann eine Abfrage wie z. B.
verwenden könnte. Aber das möchte ich nicht. Wie also führe ich die Kollisionsabfrage zwischen zwei Objekten unterschiedlicher Klassen durch?
Vielen Dank!
ich habe eine grundlegende Frage, ob ich zwischen unterschiedlichen Klassen z. B. Kollisionsabfragen durchführen kann.
Mal angenommen ich habe zwei Objekte die sich aufeinander zubewegen, wie in folgendem Code:
Code: Alles auswählen
#Module importieren
import pygame
import sys
import random
#Fenster
pygame.init()
screen = pygame.display.set_mode([1200, 700])
pygame.display.set_caption("Objekte")
clock = pygame.time.Clock()
#Klassen
class Objekte_rechts():
def __init__(self):
self.pos_x_r = 1178
self.pos_y_r = random.randint(54, 678)
self.breite_r = 20
self.hoehe_r = 20
self.color_r = (255, 255, 255)
self.speed_r = 10
def zeichnen(self):
objekt_rechts = pygame.draw.rect(screen, (self.color_r), (self.pos_x_r, self.pos_y_r, self.breite_r, self.hoehe_r), self.speed_r)
if self.pos_x_r <= 1178:
self.pos_x_r = self.pos_x_r - self.speed_r
if self.pos_x_r <= 2:
self.pos_x_r = 1178
self.pos_y_r = random.randint(54, 678)
class Objekte_links():
def __init__(self):
self.pos_x_l = 2
self.pos_y_l = random.randint(54, 678)
self.breite_l = 20
self.hoehe_l = 20
self.color_l = (255, 255, 255)
self.speed_l = 10
def zeichnen(self):
objekt_links = pygame.draw.rect(screen, (self.color_l), (self.pos_x_l, self.pos_y_l, self.breite_l, self.hoehe_l), self.speed_l)
if self.pos_x_l >= 2:
self.pos_x_l = self.pos_x_l + self.speed_l
if self.pos_x_l >= 1178:
self.pos_x_l = 2
self.pos_y_l = random.randint(54, 678)
objekt_von_rechts = Objekte_rechts()
objekt_von_links = Objekte_links()
#Loop
go = True
while go:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill((0, 0, 0))
objekt_von_rechts.zeichnen()
objekt_von_links.zeichnen()
pygame.display.update()
clock.tick(60)
Früher oder später werden die sich ja treffen und dann möchte ich ein Event auslösen. Ich weiß dass ich eine einzige Klasse mit dem Titel "Objekte" erstellen könnte und dann eine Abfrage wie z. B.
Code: Alles auswählen
if objekt_rechts.colliderect(objekt_links):
pygame.time.delay(700)
sys.exit()
Vielen Dank!