Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Nach 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()
quiz iconTeste dich selbst

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

Übe selbstständig: Pygame-Playground