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 + 1Dengan 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.
Tantangan
SedangTombol Space membuat cincin berisi 8 percikan, masing-masing bertahan selama 40 frame. Buat percikan memudar saat terbang:
- Gambar setiap percikan dengan radius
life // 10 + 1. - 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
4Guncangan Layar dan Kilatan Saat Terkena Serangan
Guncangan LayarKilatan Saat Terkena SeranganJeda BenturanJangan Berlebihan6Sempurnakan Patroli Bintang
Suara Patroli BintangPercikan di Setiap BenturanLatihan sendiri: Playground Pygame