Menu
CoddyTech

Yakalama Zamanı

Coddy'nin Pygame ile Oyun Yap kursunda ders 12 / 41.

İki dikdörtgen üst üste geldiklerinde çarpışır. a.colliderect(b), Rect a ve Rect b üst üste geldiğinde, bu yalnızca bir piksel olsa bile, True döndürür.

if block.colliderect(basket):
    block.y = -20
    block.x = random.randint(0, 460)

Yakalanan bir blok, kaçırılan bir blokla aynı şekilde en üste geri döner. Tam konumları kontrol etmek yerine üst üste gelmeyi kontrol etmek daha güvenlidir: Her seferinde 3 piksel hareket eden bir blok, kontrol ettiğiniz tek y değerini atlayıp geçebilir.

challenge icon

Görev

Kolay

Sepetin bloğu yakalamasını sağla.

  1. Kaçırılan blok testinden sonra block.colliderect(basket) koşulunu test et.
  2. Koşul doğru olduğunda, kaçırılan bir blokta olduğu gibi bloğu en üste gönder: block.y = -20 ve rastgele bir block.x değeri.

“Oyna” düğmesine bas ve bir bloğu yakala: blok en üste geri gider. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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()

Pygame ile Oyun Yap bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground