Menu
CoddyTech

Memudar dan Mengecil

Termasuk bagian Suara dan Sensasi Bermain dalam perjalanan Pygame di Coddy. Pelajaran 10 dari 23.

Percikan yang ukurannya tetap sama sampai menghilang terlihat seperti titik yang padam. Percikan sungguhan mendingin: ukurannya mengecil dan warnanya berubah saat memudar. Kamu sudah memiliki angkanya, yaitu life partikel. Hitung ukuran dan warnanya dari angka itu saat menggambarnya.

Radiusnya bisa mengikuti nilai life secara langsung:

radius = p["life"] // 10 + 1

Dengan 40 frame tersisa, radiusnya 5; dengan 9 frame atau kurang, radiusnya 1. + 1 menjaga radius tetap 1 atau lebih: lingkaran dengan radius 0 tidak akan tergambar, dan percikannya akan menghilang lebih awal.

Untuk warnanya, pilih dari beberapa tahap, dari panas ke dingin:

if p["life"] > 25:
    color = (255, 220, 80)
elif p["life"] > 10:
    color = (255, 140, 40)
else:
    color = (180, 50, 40)

Uji angka terbesar terlebih dahulu. Jika ditulis dengan urutan terbalik, life > 10 juga akan mencakup life 30, sehingga cabang kuning tidak akan pernah dijalankan.

challenge icon

Tantangan

Sedang

Tombol Space membuat cincin berisi 8 percikan, masing-masing bertahan selama 40 frame. Buat percikan memudar saat terbang:

  1. Gambar setiap percikan dengan radius life // 10 + 1.
  2. Warnai kuning (255, 220, 80) saat sisa waktunya di atas 25, oranye (255, 140, 40) saat di atas 10, lalu merah tua (180, 50, 40) setelah itu.

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Ring of Sparks")
clock = pygame.time.Clock()

DIRECTIONS = [(3, 0), (2, 2), (0, 3), (-2, 2), (-3, 0), (-2, -2), (0, -3), (2, -2)]
particles = []

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
            for vx, vy in DIRECTIONS:
                particles.append({"x": 240, "y": 180, "vx": vx, "vy": vy, "life": 40})

    for p in particles:
        p["x"] += p["vx"]
        p["y"] += p["vy"]
        p["life"] -= 1

    screen.fill((20, 20, 36))
    for p in particles:
        if p["life"] > 0:
            pygame.draw.circle(screen, (255, 220, 80), (p["x"], p["y"]), 4)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Semua pelajaran di Suara dan Sensasi Bermain

Latihan sendiri: Playground Pygame