Balok yang Jatuh
Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 24 dari 32.
Sesuatu yang jatuh adalah sesuatu yang nilai y-nya bertambah setiap frame. Jadikan block sebagai Rect juga, lalu tambahkan nilai y-nya pada setiap iterasi loop:
block = pygame.Rect(220, 0, 20, 20)
while running:
# peristiwa dan tombol
block.y += 3
# isi, gambarPada 60 frame per detik, 3 piksel per frame sama dengan 180 piksel per detik. Tinggi jendela adalah 360 piksel, jadi block memerlukan waktu dua detik untuk mencapai bagian bawah.
Game ini bergerak berdasarkan frame, seperti Move a Square, bukan berdasarkan dt. Rect hanya menyimpan bilangan bulat, jadi langkah seperti 0.6 piksel akan dibulatkan menjadi 0 dan Rect tidak akan bergerak. Game yang menggerakkan Rect berdasarkan waktu menyimpan posisinya dalam Vector2 dan menyalinnya ke Rect.
Block terus jatuh setelah keluar dari jendela. Belum ada yang menghentikannya; pelajaran berikutnya akan membawanya kembali.
Tantangan
Mudah- Di bawah keranjang, buat
block = pygame.Rect(220, 0, 20, 20). - Dalam perulangan, setelah keranjang bergerak, tambahkan 3 ke
block.y. - Gambar blok dengan warna merah
(235, 80, 80)setelah keranjang.
Coba sendiri
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()
Semua pelajaran di Perulangan Game
1Gerakkan Persegi
Buka JendelaIsi Latar Belakang4Bergerak Berdasarkan Waktu
Delta WaktuPiksel per DetikVector2Percepatan dan GesekanBerputar Kembali di Layar5Tangkap Balok
KeranjangBalok yang JatuhLatihan sendiri: Playground Pygame