Menu
CoddyTech

Düşen Bir Blok

Coddy'nin Pygame Journey'sinin Oyun Döngüsü bölümünün bir parçası. Ders 24 / 32.

Düşen bir şey, y değeri her karede artan bir şeydir. Bloğu da Rect yap ve döngünün her geçişinde 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 karede, kare başına 3 piksel saniyede 180 piksel eder. Pencerenin yüksekliği 360 piksel olduğundan, bloğun alt kenara ulaşması iki saniye sürer.

Bu oyun, dt ile değil, Kareyi Taşı dersinde olduğu gibi kare başına hareket eder. Rect yalnızca tam sayıları saklar; 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 getirecek.

challenge icon

Görev

Kolay
  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.

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

Oyun Döngüsü bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground