Hitung dengan len
Termasuk bagian Python di Jendela Game dalam perjalanan Pygame di Coddy. Pelajaran 26 dari 32.
len(stars) adalah jumlah item yang ada di list. Panjang list kosong adalah 0. Gunakan ini untuk menampilkan jumlah:
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))f-string dapat memuat ekspresi apa pun di dalam kurung kurawal, termasuk pemanggilan fungsi.
len juga dapat menetapkan batas. Tambahkan bintang hanya jika masih ada ruang:
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
stars.append(event.pos)Setelah list berisi 10 bintang, kondisi bernilai false, jadi klik tidak melakukan apa pun. Jumlah di layar dan batas menggunakan list yang sama, jadi keduanya selalu sesuai.
Batas berada di dalam perulangan event, digabungkan dengan pengujian klik menggunakan and: append hanya dijalankan ketika event adalah klik dan masih ada ruang. len juga dapat digunakan pada string: len("Night") adalah 5.
Tantangan
SedangHitung bintang dan berhenti saat mencapai sepuluh:
- Di bagian penyiapan, buat
font = pygame.font.Font(None, 36). - Di bagian menggambar, tampilkan
f"Stars: {len(stars)}"dengan warna(230, 230, 240)pada posisi (20, 20). - Tambahkan bintang saat diklik hanya jika
len(stars) < 10.
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 di sini, sekali setiap frame.
screen.fill((20, 24, 48))
# Gambar di sini, setelah pengisian warna.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Semua pelajaran di Python di Jendela Game
Latihan sendiri: Playground Pygame