Menu
CoddyTech

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, gambar

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

challenge icon

Tantangan

Mudah
  1. Di bawah keranjang, buat block = pygame.Rect(220, 0, 20, 20).
  2. Dalam perulangan, setelah keranjang bergerak, tambahkan 3 ke block.y.
  3. 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

Latihan sendiri: Playground Pygame