Fang es!
Lektion 12 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.
Zwei Rechtecke kollidieren, wenn sie sich überlappen. a.colliderect(b) ist True, wenn sich Rect a und Rect b überlappen, auch nur um ein Pixel.
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)Ein gefangener Block geht genauso wie ein verfehlter zurück nach oben. Die Überlappung zu prüfen ist sicherer, als genaue Positionen zu testen: Ein Block, der sich jeweils um 3 Pixel bewegt, kann den einen y-Wert, den du testest, direkt überspringen.
Aufgabe
EinfachNach der Prüfung, ob der Block verfehlt wurde, setze ihn zurück nach oben, wenn er mit dem Korb kollidiert: block.y = -20 und ein zufälliges block.x, wie bei einem verfehlten Block.
Probier es selbst
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Spiele mit Pygame erstellen
2Ereignisse und Kollisionen
Der KorbEin fallender BlockÜbe selbstständig: Pygame-Playground