Simpan Skor
Pelajaran 13 dari 40 dalam kursus Buat Game dengan Pygame di Coddy.
Teks di pygame adalah gambar dari kata-kata. pygame.font.Font mengubah string menjadi surface, lalu kamu menggambar surface itu dengan screen.blit.
font = pygame.font.Font(None, 32)
text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(text, (10, 10))Font(None, 32) adalah font bawaan pygame, dengan tinggi 32 piksel. Buat sekali sebelum perulangan. render(text, True, color) menggambar kata-katanya; True menghaluskan tepinya. blit(surface, (x, y)) menyalin gambar ke layar dengan sudut kiri atasnya berada di (x, y).
Render teks di dalam perulangan, setelah fill. Nilainya berubah, dan gambar yang dibuat sekali akan terus menampilkan angka lama.
Tantangan
Mudah- Sebelum perulangan, buat
font = pygame.font.Font(None, 32)danscore = 0. - Tambahkan 1 ke
scoresaat keranjang menangkap sebuah balok. - Setelah menggambar balok, render
f"Score: {score}"dengan warna(240, 240, 240)dan blit di posisi(10, 10).
Coba sendiri
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Buat Game dengan Pygame
2Peristiwa dan Tabrakan
KeranjangBalok yang JatuhLatihan sendiri: Playground Pygame