Hitung Bintang
Termasuk bagian Python di Jendela Game dalam perjalanan Pygame di Coddy. Pelajaran 31 dari 32.
Pemain perlu mengetahui seberapa dekat langit dengan kondisi penuh. Tampilkan jumlah dari dua puluh di pojok kiri atas:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))f-string menggabungkan sebuah nilai, len(stars), dengan teks biasa, /20. Dengan tujuh bintang, hasilnya adalah Stars: 7/20.
Buat font di bagian penyiapan, di samping stars = []. Membuat font akan memuatnya, dan itu membutuhkan waktu, jadi lakukan sekali saja. Merender teks tidak membutuhkan banyak biaya dan terjadi di setiap frame, sehingga hitungannya selalu diperbarui.
Gambar label terakhir di bagian penggambaran, agar tidak ada bintang yang menutupinya.
Tantangan
MudahTampilkan jumlahnya:
- Di bagian penyiapan, buat
font = pygame.font.Font(None, 36). - Di akhir bagian menggambar, render
f"Stars: {len(stars)}/20"dengan(230, 230, 240)dan blit di (20, 20).
Coba sendiri
import random
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 hal-hal di sini, sekali setiap frame.
screen.fill((20, 24, 48))
# Gambar di sini, setelah screen.fill().
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:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Semua pelajaran di Python di Jendela Game
Latihan sendiri: Playground Pygame