Menu
CoddyTech

Düşen Bir Blok

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

Düşen bir şey, y değeri her karede artan bir şeydir. Bloğu da bir Rect yap ve döngünün her yinelemesinde y değerine ekleme yap:

block = pygame.Rect(220, 0, 20, 20)

while running:
    # olaylar ve tuşlar
    block.y += 3
    # doldur, çiz

Saniyede 60 kare hızında, kare başına 3 piksel saniyede 180 pikseldir. Pencerenin yüksekliği 360 pikseldir, bu yüzden bloğun en alta ulaşması iki saniye sürer.

Bu oyun, dt kullanarak değil, Bir Kareyi Hareket Ettir oyunundaki gibi kareler üzerinden hareket eder. Bir Rect yalnızca tam sayıları tutar; bu nedenle 0.6 piksel gibi bir adım 0'a yuvarlanır ve Rect hiç hareket etmez. Rect'leri zamana göre hareket ettiren oyunlar, konumu bir Vector2 içinde tutar ve Rect'e kopyalar.

Blok, pencereden çıktıktan sonra da düşmeye devam eder. Henüz onu durduran bir şey yok; sonraki ders onu geri getirir.

challenge icon

Görev

Kolay

Üstten bir blok düşür.

  1. Sepetin altında block = pygame.Rect(220, 0, 20, 20) oluştur.
  2. Döngüde, sepet hareket ettikten sonra block.y değerine 3 ekle.
  3. Sepetten sonra bloğu kırmızı renkte (235, 80, 80) çiz.

“Oyna” düğmesine bas: üstten kırmızı bir blok düşer. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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)

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

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    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