Jatuh Secara Acak
Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 25 dari 32.
Saat blok jatuh melewati bagian bawah, letakkan kembali di atas bagian atas agar jatuh lagi. Bagian atasnya melewati bagian bawah saat block.top > 360.
Agar permainan tidak mudah ditebak, jatuhkan blok di tempat acak. Module random Python memilih angka: random.randint(0, 460) adalah bilangan bulat dari 0 sampai 460, termasuk keduanya.
import random
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)Mengapa 460? Lebar blok adalah 20, jadi x sebesar 460 menempatkan sisi kanannya tepat di tepi jendela. Dan y = -20 menempatkannya tepat di atas jendela, sehingga blok meluncur masuk dari atas.
Tantangan
Mudah- Tambahkan
import randomdi bagian atas. - Setelah block jatuh, saat
block.top > 360, aturblock.y = -20dan aturblock.xmenjadirandom.randint(0, 460).
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)
block = pygame.Rect(220, 0, 20, 20)
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())
block.y += 3
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
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