Menu
CoddyTech

Berkilau

Termasuk bagian Python di Jendela Game dalam perjalanan Pygame di Coddy. Pelajaran 30 dari 32.

Bintang sungguhan berkelap-kelip. Di sini, setiap bintang meredup selama satu frame sesekali, secara acak. Pada setiap frame, setiap bintang mengacak angka dari 1 sampai 30, dan jika hasilnya 1, bintang itu digambar redup:

for star in stars:
    colour = (255, 255, 255)
    if random.randint(1, 30) == 1:
        colour = (110, 120, 170)
    pygame.draw.circle(screen, colour, star, 3)

colour dimulai dengan warna putih untuk setiap bintang, dan if mengubahnya hanya jika hasilnya 1. Satu frame dari 30 kira-kira terjadi dua kali per detik untuk setiap bintang, dan setiap bintang mengacak angkanya sendiri, jadi bintang-bintang berkelap-kelip pada waktu yang berbeda. Perubahan kecil dan tidak beraturan itulah yang membuat langit tampak hidup.

Tambahkan import random di bagian atas program. Pengacakan angka dilakukan di perulangan penggambaran karena pilihan harus dibuat lagi pada setiap frame, untuk setiap bintang.

challenge icon

Tantangan

Sedang

Buat bintang-bintang berkelap-kelip:

  1. Tambahkan import random di bagian atas.
  2. Dalam perulangan bintang, mulai setiap bintang dengan colour putih (255, 255, 255).
  3. Saat random.randint(1, 30) == 1, buat warnanya redup (110, 120, 170).
  4. Gambar bintang menggunakan colour.

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Siapkan semuanya di sini, sebelum perulangan game.
stars = []

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            stars.append(event.pos)

    # Ubah semuanya di sini, sekali setiap frame.

    screen.fill((20, 24, 48))
    # Gambar di sini, setelah layar diisi.
    pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
    pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 3)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Semua pelajaran di Python di Jendela Game

Latihan sendiri: Playground Pygame