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, çizSaniyede 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.
Görev
Kolay- 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.
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
1Bir Kareyi Hareket Ettir
Bir Pencere AçArka Planı Doldur2Şekiller ve Renkler
Daireler, Çizgiler, ÇokgenlerKonturlar ve KöşelerŞekillerden Oluşan Bir SahneDeğişen Renkler5Blokları Yakala
SepetDüşen Bir BlokKendi başına pratik yap: Pygame playground