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, çizSaniyede 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.
Görev
KolayÜstten bir blok düşür.
- Sepetin altında
block = pygame.Rect(220, 0, 20, 20)oluştur. - Döngüde, sepet hareket ettikten sonra
block.ydeğerine 3 ekle. - 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
2Olaylar ve Çarpışmalar
SepetDüşen Bir BlokKendi başına pratik yap: Pygame playground